■ 最新の投稿

VBAProject技:VBAProjectをバックアップ!全モジュールを一括保存

VBAのバックアップ、モジュールを1つずつエクスポートしていませんか?

VBAProjectにたくさんのモジュールがあるExcelブックって、それだけで大変ですが、これを全部エクスポートしようとすると、1つずつ手作業で書き出すしかなくて、とても面倒です。

一括でエクスポートするVBA技を紹介します。

【前提】

以下のようにVBAProjectにモジュールを含むExcelブックを想定します。

① Visual Baisc プロジェクトへのアクセスを許可します。

Excel VBAで『Visual Basicプロジェクトへのアクセス』を有効にする方法

② 「Microsoft Visual Basic for Application Extensibility」を参照設定します。

③ 次のプログラムコードを記載します。

Public Sub Sample_ExportAllModule_01()

    ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    ' 参照設定:
    ' 「Microsoft Visual Basic for Application Extensibility」
    ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    
    ' このブックのVBProjectをオブジェクト変数に格納する。
    Dim Obj As VBIDE.VBProject
    Set Obj = ThisWorkbook.VBProject

    ' VBProjectに存在するコンポーネント数を変数に格納する。
    Dim CompCnt As Long
    CompCnt = Obj.VBComponents.Count

    ' エクスポート先のフォルダを決める。
    Dim ExpDir As String
    ExpDir = "C:\VBAModuleFile"

    ' VBProjectに存在するコンポーネントを一つずつ参照する。
    Dim lp As Long
    For lp = 1 To CompCnt
        ' エクスポートするファイルの拡張子を決定する。
        Dim str As String
        Select Case Obj.VBComponents(lp).Type
            Case 1
                str = ".bas"
            Case 2
                str = ".frm"
            Case Else
                str = ".cls"
        End Select
        
        ' エクスポートを実行する。
        With Obj.VBComponents(lp)
            .Export (ExpDir & "\" & .Name & str)
        End With
    Next

    ' オブジェクトを破棄する。
    Set Obj = Nothing

End Sub

このVBAを実行すると、以下の結果が得られます。

コードを資産として残すことも、VBA開発では大切な仕事です。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です