Excelのシート CodeNameからNameを導き出す

VBAでExcelのシート名を参照する際に、CodeNameからシート名を導き出す必要が生じました。

ネットに当ってみたのですが、よい例がなく、自分でプロパティを探して表示させるようにしました。

あまりWebには掲載されていないようなので、メモ替わりに掲載します。

シートの名前を変更
シートの名前を変えておいて、VBEからCodeNameの名前も変えます。
CodeNameを参照

シートの名前であるaaaaaを、Siitoだけを頼りに取得したい場合、ブック内の全シートをループして・・・という方法をすぐに思いつきますが、シート数が多い場合の処理時間が・・・・

そこで下図のようなコードを書くと、aaaaa が取得できます。なぜか、いきなりNameプロパティを呼び出すと Siito を呼び出してしまうのに、Properties(“name”)にすると aaaaa を呼び出せるところが新味です。
コード例

なお、これを導き出したオブジェクトツリーを表示しています。
コード例クリックすると拡大します
ここで赤枠でくくった部分がヒントになると思います。

Excel 2002、2003、2007、2010で動くことを確認しました。

なお、Excel2002以上では、VBProjectプロパティを呼び出す際に設定によっては「実行時エラー ‘1004’:プログラミングによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます」というエラーが出ます。こちらについては、以下のリンクを参考にしてください。
マイクロソフトのサポートページ
上のリンクは今見てみたら切れていました。なので
こちらをご参照下さい。

コメント

タイトルとURLをコピーしました