.net - 从 .NET 逆向工程 Access 宏

标签 .net vb.net ms-access

一位同事继承了一个 Microsoft Access 宏,该宏通过对一组使用基于 ODBC 的链接表的操作查询调用 OpenQuery,对 Sybase 数据库执行一系列 SQL 操作。我想帮他把它转换成我们可以直接对数据库执行的 SQL 脚本。由于我们有很多这样的宏,我想想出一个转换工具。

(除非已经存在,在这种情况下,请指导我。)

我希望能够使用 COM 互操作 Access 宏的详细信息。到目前为止,我还没有找到了解这些细节的方法。这是我目前所拥有的。

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"

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

关于.net - 从 .NET 逆向工程 Access 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2992432/

相关文章:

c# - 让 ZedGraph 使用科学计数法而不是工程计数法的最简单方法是什么?

c# - .NET 有检查和设置运算符吗?

c# - FileInfo 变量中的图像大小

asp.net - 如何从 asp.net 网页中的 xml 文件调用节点

vba - 在VB中连接字符串和整数

ms-access - 如何通过网络查看谁在使用我的 Access 数据库?

.net - Windows 休眠如何工作

.net - VB.NET - 你如何从另一个线程读取一个值

vb.net - 如何在 VB.NET 中没有对话框 "Really want to overwrite"的情况下覆盖其他 Excel 文件

delphi - 字段 'Invoice_Date'无法修改