2014年6月30日月曜日

MS Access のVBAモジュールを全てエクスポート

Microsoft Access のVBAモジュール(プログラム ソースコード)を一括でファイルにエクスポートするには、VBComponent.Export メソッドを使います。
下にサンプルを挙げますが、参照設定として以下の2つが人必要です。
  • Microsoft Visual Basic for Applications Extensibility
  • Microsoft Scripting Runtime
参照設定は、Visual Basic Editor(VBE)のメニューから、ツール(T) > 参照設定(R) と辿ります。

VBAモジュールをファイルにエクスポートするサンプル
Sub ExportComponents()
    Dim Fso As New Scripting.FileSystemObject
    Dim OutDir As String

    OutDir = Fso.GetParentFolderName(CurrentDb.Name) & "\src"
    If Not Fso.FolderExists(OutDir) Then
        Fso.CreateFolder (OutDir)
    End If

    Dim Component As VBComponent
    For Each Component In Application.VBE.ActiveVBProject.VBComponents
        Component.Export Filename:=OutDir & "\" & Component.Name & GetExtension(Component.Type)
    Next
End Sub

Function GetExtension(ComponentType As vbext_ComponentType) As String
    Select Case ComponentType 
    Case vbext_ComponentType.vbext_ct_ClassModule
        GetExtension= ".cls"
    Case vbext_ComponentType.vbext_ct_MSForm
        GetExtension= ".frm"
    Case vbext_ComponentType.vbext_ct_StdModule
        GetExtension= ".bas"
    Case vbext_ComponentType.vbext_ct_ActiveXDesigner
        GetExtension= ".cls"
    Case vbext_ComponentType.vbext_ct_Document
        GetExtension= ".cls"
    End Select
End Function