セルを操作するとき、まず対象となるブックを特定するように、VBEの操作でも対象のVBProjectを意識しなければなりません。まずは、VBProjectへのアクセスを覚えましょう。
VBEで現在開いているすべてのVBProjectを取得するには、VBProjectsコレクションを操作します。次のコードは、現在開いているVBProjectの個数と、1番目のVBProjectに関する情報を表示します。なお、開いているブックが、まだ保存されていない状態だと、Filenameプロパティがエラーになりますので注意してください。
Sub Sample1() Dim buf As String With Application.VBE buf = buf & .VBProjects.Count & vbCrLf buf = buf & .VBProjects(1).Name & vbCrLf buf = buf & .VBProjects(1).Filename & vbCrLf buf = buf & .VBProjects(1).Protection & vbCrLf End With MsgBox buf End Sub
Protectionプロパティは、VBProjectがパスワードで保護されて、VBProjectの内容が表示されていないときに1を返します。保護されていても、ユーザーがパスワードを入力して、VBProjectの内容を表示しているときは0が返ります。また、保護されていない場合も返り値は0です。Protectionプロパティは読み取り専用ですので、Protectionプロパティを使って保護の設定や解除を行うことはできません。
VBProjectオブジェクトは、ブックごとのVBProjectを表します。上記のように、VBEオブジェクトには現在開いているすべてのVBProjectオブジェクトにアクセスできます。また、ブック(Workbookオブジェクト)側から、自分のVBProjectにアクセスすることも可能です。次のコードは、アクティブブックのVBProjectに関する情報を表示します。
Sub Sample2() Dim buf As String With ActiveWorkbook buf = buf & .VBProject.Name & vbCrLf buf = buf & .VBProject.Filename & vbCrLf buf = buf & .VBProject.Protection & vbCrLf End With MsgBox buf End Sub
これは、次のようなイメージです。