一位同事继承了一个Microsoft Access宏,该宏通过在一堆动作查询上调用OpenQuery来对Sybase数据库执行一系列SQL操作,这些查询使用ODBC上的链接表。我想帮助他将其转换为我们可以直接针对数据库执行的SQL脚本。由于我们有很多像这样的宏,我想提出一个转换工具。
(除非已存在,否则请指导我。)
我希望能够使用COM互操作访问宏的细节。到目前为止,我还没有办法找到这些细节。这是我到目前为止所拥有的。
Imports Access = Microsoft.Office.Interop.Access
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
Dim app As New Access.Application()
app.OpenCurrentDatabase("c:\test.mdb")
Dim macro As Access.AccessObject = app.CurrentProject.AllMacros("Macro1")
'Do something with variable "macro"???'
app.Quit(Access.AcQuitOption.acQuitSaveNone)
Marshal.FinalReleaseComObject(app)
End Sub
End Module
我认为AccessObject的任何成员都不提供我需要的信息。但我找不到任何甚至提到宏的东西。有人做过这样的事吗?是否有一些DoCmd或SysCmd操作可以在这里工作?
(顺便说一句,我知道一旦我获得了SQL,我将完成将其转换为Sybase SQL的任务。当我来到它时,我将跨越那座桥。)
答案 0 :(得分:4)
如果将宏定义转储到文本文件会有所帮助,请尝试以下方法:
application.saveastext acMacro, "Macro1", "Macro1.txt"
然后,您可以打开文本文件并阅读 Action 和 Argument 语句。