Declare Function api_Macro_Close Lib "msaccess.exe " Alias "#20" (ByVal hMacro As Long) As Long
Declare Function api_Macro_NextRow Lib "msaccess.exe" Alias "#22" (ByVal hMacro As Long, ByVal lSkipBlank As Long, lEndOfMacro As Long) As Long
Declare Function api_Macro_GetActID Lib "msaccess.exe" Alias "#29" (ByVal hMacro As Long) As Long
Sub ListMacroDetail()
Dim lHdr As Long, sArgs1 As String, lActID As Long, Macro As Variant, i As Long, ret As Long
Dim sArg(5) As String
WizHook.key = 51488399:
For Each Macro In CurrentProject.AllMacros
lHdr = WizHook.OpenScript(Macro.Name, "", 0, 0, 0)
If lHdr Then
Do While api_Macro_NextRow(lHdr, 0, 0)
'マクロ名(オブジェクト)
Debug.Print Macro.Name & ",";
'マクロ名(ラベル)
Call WizHook.GetScriptString(lHdr, 0, sArgs1)
Debug.Print sArgs1 & ",";
'条件式
Call WizHook.GetScriptString(lHdr, 2, sArgs1)
Debug.Print sArgs1 & ",";
'アクション
lActID = api_Macro_GetActID(lHdr)
Debug.Print WizHook.NameFromActid(lActId) & "(" & lActId & "),";
'コメント
Call WizHook.GetScriptString(lHdr, 1, sArgs1)
Debug.Print sArgs1 & ",";
'第1パラメータ
Call WizHook.GetScriptString(lHdr, 3, sArgs1)
Debug.Print sArgs1 & ",";
'第2パラメータ
Call WizHook.GetScriptString(lHdr, 4, sArgs1)
Debug.Print sArgs1 & ",";
'第3パラメータ
Call WizHook.GetScriptString(lHdr, 5, sArgs1)
Debug.Print sArgs1 & ",";
Debug.Print
Loop
api_Macro_Close lHdr
End If
Next
End Sub
2007年09月20日
Access:マクロの内容を取得するVBA
マクロの内容を取得するVBA。Accessの非公開APIを使用して取得する。
この記事へのコメント
コメントを書く
この記事へのトラックバック