从.NET反向工程Access宏

时间:2010-06-07 19:23:52

标签: .net vb.net ms-access

一位同事继承了一个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的任务。当我来到它时,我将跨越那座桥。)

1 个答案:

答案 0 :(得分:4)

如果将宏定义转储到文本文件会有所帮助,请尝试以下方法:

application.saveastext acMacro, "Macro1", "Macro1.txt"

然后,您可以打开文本文件并阅读 Action Argument 语句。