VBProjectの操作


セルを操作するとき、まず対象となるブックを特定するように、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

これは、次のようなイメージです。