8

ThisWorkbookVBA Extensibility を使用して、Excel ワークシートのコード モジュールの名前を変更しようとしています。

私はこれを次の行で達成します

ThisWorkbook.VBProject.VBComponents("ThisWorkbook").Name = "wb"

VB エディターで変更を確認し、ワークブックのプロパティにアクセスすることもできますDebug.? wb.Name

ただし、ファイルを保存して閉じてから再度開くと、奇妙な動作が発生します。名前を変更する前にコード モジュールが空だった場合は、古い空の名前に戻りますThisWorkbook

保存前に空でなかったり、入力されていた場合は、空のThisWorkbookモジュール (存在する場合にイベントを発生させる) と、wbワークブック イベントを発生させない塗りつぶされたモジュールの両方があります。

ここに画像の説明を入力

誰かがこの動作を見たことがありますか?修正/回避策を知っていますか?

4

1 に答える 1

10

素早い回答: ThisWorkbook.[_CodeName] = "newName"

詳細な回答

への参照を追加しMicrosoft Visual Basic For Applications Extensibility 5.3て行を実行すると

ThisWorkbook.VBProject.VBComponents("ThisWorkbook").Name = "wb"

Name プロパティはThisWorkbook実際には変更されていません

ここに画像の説明を入力

ファイルを保存して再度開くと、ThisWorkbookオブジェクトが複製される

ここに画像の説明を入力

Workbookこれは、1 つのワークブック内に 2 つのオブジェクトがあり、両方に名前が付けられていることを意味します。ThisWorkbook


回避策は、[プロパティ]ウィンドウThisWorkbookwb使用して の名前を に変更するか、

ThisWorkbook.[_CodeName] = "newName"ThisWorkbook.CodeName読み取り専用だからです。

于 2013-11-05T15:29:45.857 に答える