none
Sheetオブジェクトコピー時に名前が正しくコピーされない RRS feed

  • 質問

  • Excelによる帳票を作成しております。

    ユーザにてシートを複製(コピー)して、1ブック内で複数のシートを作成できる仕様としており、

    帳票取り込みをVBAプログラムで行っており、対象となるシートをシートオブジェクト名から判断して取得するようにしております。

    つまり、対象のシートオブジェクト名を「target_Sheet1」として、ユーザがそのシートをコピーした場合、

    シートオブジェクト名「target_Sheet2」が作成され、たとえユーザが名前の変更をあタブ上で行ってもオブジェクト名は「target_Sheet*」で取得できると考えております。

    テストを行う中で、シートをコピーする際、1回目のコピー時に上記の動きをしない場合がありました。

    「target_Sheet1」をコピーして、作成されたシートのオブジェクト名を見ると「Sheet2」となる場合がありました。

    ただし、2回目のコピーを行うと、「target_Sheet2」のオブジェクト名となりました。

    何度か同じ手順を繰り返しましたが、再現します。

    これはExcelの動きが不安定(バグ)でしょうか?それとも回避手順があるのでしょうか?

    どうかご教授お願いいたします。



    2014年9月24日 6:03

すべての返信

  • 1点、修正します。

    >「target_Sheet1」をコピーして、作成されたシートのオブジェクト名を見ると「Sheet2」となる場合がありました。

    >ただし、2回目のコピーを行うと、「target_Sheet2」のオブジェクト名となりました。

    正しくは、Excelを開いた後、VBEを開くか否かで動作が違うことがわかりました。

    <再現手順>

    環境:Excel2007

    ①新規ワークブックを作成し、開発タブからVBEを開き、ワークシートのオブジェクト名を「testSheet01」に変更し、保存して閉じる。

    ②ワークブックを開き、シートタブを右クリックし、「移動またはコピー」を選択し、ブック内にコピーを作成する。

    ③開発タブからVBEを開き、コピーしたオブジェクト名を確認すると、「Sheetx」となっている。

    ④この状態(VBEを一度開いた状態)で、②を実施し、③で確認すると、今回のシートオブジェクト名は「testSheet02」となっている。

    本来は「testSheet2,3,4,...」とオブジェクト名がついていくのかと思っておりましたが、

    上記のような動きが正しいのかどうか、回避方法があるのかどうか、

    どうかご教授お願いいたします。

    2014年9月25日 2:44