从.NET反向工程访问宏

从.NET反向工程访问宏,.net,vb.net,ms-access,.net,Vb.net,Ms Access,一位同事继承了一个Microsoft Access宏,该宏通过在一组操作查询上调用OpenQuery对Sybase数据库执行一系列SQL操作,这些查询使用ODBC上的链接表。我想帮助他将其转换为SQL脚本,我们可以直接对数据库执行该脚本。由于我们有很多这样的宏,我想提出一个转换工具 (除非已经存在一个,在这种情况下,请指示我到它。) 我希望能够使用COM互操作访问宏的详细信息。到目前为止,我还没有找到一种方法来了解这些细节。这是我到目前为止所拥有的 Imports Access = Micros

一位同事继承了一个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。当我遇到它时,我会跨越这座桥。)

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

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

然后可以打开文本文件并读取操作和参数语句。

…然后从保存的querydfs中获取SQL。