【问题标题】:how to list down or enumerate all the Query names under a MS Access Macro using VBA如何使用 VBA 列出或枚举 MS Access 宏下的所有查询名称
【发布时间】:2018-04-23 21:53:14
【问题描述】:

当我们在设计模式下以 MS 访问打开宏时,我们会看到所有查询 (OpenQuery) 和许多其他事件。我只需要列出宏内的查询名称。我已经知道如何从数据库中获取所有查询名称,我特别关注的是,如果我在 VBA 中的函数/子中传递一个宏名称,它将只列出其中的那些查询。

如下图所示,数据库中有三个查询。但是“Macro1”包含两个查询,所以,如果我只想通过将 Macro1 作为参数字符串传递给函数来获取这两个查询名称。

【问题讨论】:

  • 我非常感谢 dotNET,您花了一些时间来解决我的问题以找到解决方案。但我真的很抱歉,如果我被误解了,我已经枚举了所有数据库对象,无论是查询还是表单,甚至列出了所有宏名称。我正在努力的是阅读特定宏中的查询名称”如果我将特定的宏名称传递给函数,我只想将查询打包在宏中,而不是任何其他宏。
  • 看看bytes.com/topic/access/answers/…那个链接表明无法使用VBA直接查看宏的组件,但它讨论了如何将所有宏导出到文本文件,然后解析文本文件.
  • 非常感谢韦恩!!我认为您是对的,在为自己寻找答案之前,我也看到了这个。还在想这里是否有人可以以不同的方式回答它。实际上我有几个包含许多宏和查询的 accdbs。我有严格的时间表将脚本转换为 SAS。如果我手动打开每个宏,然后一一打开查询以转换为 proc sql。这将太单调和耗时。所以我编写了所有代码来从查询中获取 sql 并枚举所有查询,但我需要将它们按顺序编写并放在宏中。
  • 我进行了一些搜索,但没有找到自动导出为文本或自动“转换为 Visual Basic”功能的方法。如果你有大量的宏,哎呀!
  • 如果我理解正确,您需要从宏中读取查询名称。如果是这样,那绝对是可能的。至少accessdependencychecker.com 使用 VBA 完成此操作,您可以下载并检查它是如何完成的,软件是免费的。

标签: database ms-access automation vba


【解决方案1】:

感谢@SergeyS。指出源代码在 Access Dependency Checker 中!我已经使用该工具多年,但从未注意到...

我压缩了在那里找到的代码,以将每个宏导出为 txt 文件。要运行它,请将这个模块放在您的数据库中,更改“sMacroFile”路径以适应您的环境。

非常感谢 Thomas Koester 提供 Access Dependency Checker (http://www.accessdependencychecker.com/)!

Option Compare Database
Option Explicit

Function Process_Macros()
Dim mcr As Object
Dim sMacroFile  As String
    If CurrentProject.AllMacros.Count > 0 Then
        '--- cycle thru collection of macros
        For Each mcr In CurrentProject.AllMacros
            Debug.Print "Macro: " & mcr.Name
            sMacroFile = "c:\TEMP\" & mcr.Name & ".txt"
            ''''Call readMacro(ac, mcr)
            SaveAsText acMacro, mcr.Name, sMacroFile
        Next mcr
    End If
End Function

【讨论】:

  • 是的,真的很有帮助!!非常感谢@Wayne 和@Sergey!! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2012-04-13
相关资源
最近更新 更多