管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

個人用マクロブック内のモジュールをエクスポートする(ExcelVBA)

個人用マクロブックに保存している各種モジュールをエクスポートして、別の端末とも共有したいなと思ったので書いてみた。

コードを動かすときのポイント

1.「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」へのチェックが必要
ON/OFFするマクロを書いてみました☟

2.VBEditorの参照設定に「Microsoft Visual Basic for Applications Extensibility」の追加が必要
コレっすね☟
f:id:ksk1130:20170524234241p:plain

さて、コードです

Option Explicit

Sub export_modules()
    Const EXPORT_FILENAME As String = "PERSONAL.XLSB"
    Const EXPORT_DIR As String = "D:\excel_modules"

    Dim tmpWorkBook As Workbook
    Dim personalExlBook As Workbook
    Dim tmpComponent As VBComponent
    Dim tmpPath As String
    
    ' Export対象は"PERSONAL.XLSB"だけにする
    For Each tmpWorkBook In Workbooks
        If tmpWorkBook.Name = EXPORT_FILENAME Then
            Set personalExlBook = tmpWorkBook
            Exit For
        End If
    Next
        
    For Each tmpComponent In personalExlBook.VBProject.VBComponents
        If tmpComponent.Type = 1 Then ' 標準モジュール
            tmpPath = EXPORT_DIR & "\" & tmpComponent.Name & ".bas"
        ElseIf tmpComponent.Type = 2 Then ' クラスモジュール
            tmpPath = EXPORT_DIR & "\" & tmpComponent.Name & ".cls"
        ElseIf tmpComponent.Type = 3 Then ' ユーザーフォーム
            tmpPath = EXPORT_DIR & "\" & tmpComponent.Name & ".frm"
        End If
        tmpComponent.Export (tmpPath)

        Debug.Print tmpPath
    Next
        
    Set personalExlBook = Nothing
End Sub

f:id:ksk1130:20170524234240p:plain

インポート編はまた後日...