2014年12月4日木曜日

[MSAccess] マクロ定義を全てエクスポート

Microsoft Access のマクロをテキストファイルにエクスポートする機能はありません、マクロ オブジェクトの定義内容をテキストファイルに保存することになります。下にサンプルを挙げますが、参照設定として以下の追加が必要です。
  • Microsoft Scripting Runtime
参照設定は、Visual Basic Editor(VBE)のメニューから、ツール(T) > 参照設定(R) と辿ります。

MSAccess マクロ オブジェクトをテキストファイルに出力するサンプル
Sub ExportMacro()
    Dim Fso As New Scripting.FileSystemObject
    Dim OutDir As String

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

    Dim Containers As DAO.Containers
    Dim Container As DAO.Container
    Dim Document As DAO.Document

    Set Containers = CurrentDb.Containers
    Set Container = Containers("Scripts")
    For Each Document In Container.Documents
        SaveAsText ObjectType:=AcObjectType.acMacro, ObjectName:=Document.Name, FileName:=OutDir & "\" & Document.Name
    Next
End Sub

(※補足)CurrentDb.Containers("Scripts") といった具合に続けて実装したほうがシンプルだけど、「オブジェクトが正しくない」とエラーになります。