我可以使用 Access VBA 来确定表是否具有数据宏吗?

2024-02-01

有没有办法通过 VBA 确定 Access 表是否包含数据宏?我有数据宏most我的表,但是如果我的代码遇到没有它的表,则会失败。

我没有收到错误消息。相反,代码会继续运行,就像处于无限循环中一样,但我必须强制 Access 退出才能逃脱。

具体来说,我试图保存所有表格和数据宏,以便稍后可以使用(未​​记录的)LoadFromText 函数重新创建它们。

我在下面的代码示例中用 ** BUG ** 突出显示了该问题。

For Each td In db.TableDefs 
    If Left(td.Name, 4) <> "MSys" Then

        'Save the table as a text file.        
        DoCmd.TransferText acExportDelim, , td.Name, sExportLocation & "Table_" & td.Name & ".txt", True

        'Save the table's data macro as an XML file. 
        '** BUG **: If a table doesn't have a data macro, Access freezes/starts infinite loop.
        Application.SaveAsText acTableDataMacro, td.Name, sExportLocation & "Table_" & td.Name & "_DataMacro.xml"

    End If
Next td

我假设我需要某种嵌套的 If 语句,首先检查表中是否存在数据宏。但我不知道该怎么写。

感谢指出 SaveAsText 和 LoadFromText 函数的人们在另一个SO帖子中 https://stackoverflow.com/questions/9206153/how-to-export-access-2010-data-macros。这些功能似乎有很大的潜力。


您可以使用简单的查询来指示表是否具有数据宏:

SELECT [Name] FROM MSysObjects WHERE Not IsNull(LvExtra) and Type =1

该宏可以应用于问题中的 VBA 代码,如下所示:

For Each td In db.TableDefs
    If Left(td.Name, 4) <> "MSys" Then

        'Save the table as a text file.
        DoCmd.TransferText acExportDelim, , td.Name, sExportLocation & _
            "Table_" & td.Name & ".txt", True

        'Define a recordset to determine if the table has a data macro.
        sql = "SELECT [Name] FROM MSysObjects WHERE Not IsNull(LvExtra) and " & _
            "Type = 1 and [Name] = '" & td.Name & "'"
        Set rst = db.OpenRecordset(sql, dbOpenSnapshot)

        'If the table has a data macro, save the data macro as an XML file.
        If rst.RecordCount <> 0 Then
            Application.SaveAsText acTableDataMacro, td.Name, sExportLocation & _
                "Table_" & td.Name & "_DataMacro.xml"
        End If

        'Close the recordset and clear its variable.
        If Not rst Is Nothing Then
            rst.Close
            Set rst = Nothing
        End If

    End If
Next td

信用去往UtterAccess 上的帖子 http://www.utteraccess.com/wiki/index.php/Document_Data_Macros and @Scotch 对 SO 问题的回答 https://stackoverflow.com/questions/16244608/how-to-list-datamacro-objects-in-an-access-database引用了 UtterAccess 帖子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以使用 Access VBA 来确定表是否具有数据宏吗? 的相关文章

  • MS Access VBA:通过 Outlook 发送电子邮件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何使用 MS Access VBA 通过帐户发送电子邮件 我知道这个问题很模糊 但是很难在网上找到在某种程度上还没有过时的相关信息 编辑
  • 使用 PDFMAKER 将多封电子邮件保存为 pdf

    我是 VBA 的新手 但我用 SAS 编写了一些程序 用汇编程序 大型机和 PC Word Perfect 宏 编写了一些程序 用 Java HTML 和其他东西编写了一些程序 我所做的是 当我遇到问题并且我认为我可以对其进行编程时 我会在
  • 数据转换器 SSIS 数据流组件中相应列的转换数据类型应该是什么?

    我们的一台服务器上有普通的 Microsoft SQL Server 2008 我们决定在文件系统上创建 DTSX 文件 以便我们可以使用 BIDS 2008 打开 DTSX 文件 一种 SSIS 控制流组件 它从 Microsoft SQ
  • 有没有办法调用 VBA(MS Access 2002 或 2003)中任何控件的 BeforeUpdate 事件过程?

    在 VBA 中 我正在更改 Access 表单中的一些控件的值 我喜欢在执行此操作后运行这些控件的 BeforeUpdate 事件 因为它会检查字段之间的一致性 Private Sub ExampleProc1 Dim intCancel
  • IE.navigate2 因保护模式关闭而失败

    我正在从 Excel VBA 自动化 IE8 Excel 2010 Windows 7 Set IE CreateObject InternetExplorer Application IE Navigate2 URL 如果 URL 是处于
  • VB SQL 语句未选择正确的行

    我试图使用 SELECT 语句在我的数据库中 选择 一个人 但它没有选择正确的人 我也不确定为什么 我正在使用访问数据库 数据库连接代码 Imports System Data OleDb Module Database Connectio
  • MS Access 中的舍入

    VBA Access 中舍入的最佳方法是什么 我目前的方法是利用Excel方法 Excel WorksheetFunction Round 但我正在寻找一种不依赖Excel的方法 请注意 VBA Round 函数使用 Banker 舍入 将
  • 我需要代码在两行之间复制并粘贴到另一张表中,并给出任何值?

    例如 我有 50 行数据 第一行有学生的名字 我需要代码将数据从 RAM 复制到 RAMESH 在这之间我有 20 行 我需要代码来复制行并将其粘贴到另一张纸中 它不应该问我名字 默认情况下 它必须采用 RAM 和 RAMESH 名称 好的
  • 在 Access 数据库中对列包含数字和字母的数据进行排序

    请帮助我 因为我一直无法做到这一点 选择此列 columnA 的访问 SQL 是什么 以便它返回一个结果集 其中的不同值首先根据数字排序 然后根据字母排序 这是列值 10A 9C 12D 11G 9B 10C 9R 8T 我尝试过 从 tb
  • 如何在不滚动的情况下截取整个电子邮件正文?

    我正在使用 OL2010 想要制作整个电子邮件的屏幕截图 不仅仅是 屏幕 可以用VBA或者外部程序来完成吗 有一个类似的问题 https stackoverflow com questions 4176340关于如何使用 C 实现这一点 注
  • OpenArgs 为空问题

    我正在使用OpenArgs使用时发送值的参数DoCmd OpenForm DoCmd OpenForm frmSetOther acNormal acFormAdd acDialog value 然后我用Me OpenArgs在打开的表格内
  • 如何使用 VBA 将 mm/dd/yyyy 更改为 dd/mm/yyyy

    我在使用 VBA 将 mm dd yyyy 转换为 dd mm yyyy 日期格式时遇到问题 我有一个这样的表 仅供参考 该表是从报告工具自动生成的 字符串操作 或任何 Excel 函数可以提供帮助吗 希望知道如何解决这个问题的人可以给我一
  • MS Access 执行 POST Web 请求

    在我的 MS Access 应用程序中 我需要定期向我的网络服务器发送一批信息 我不需要任何花哨的东西 比如 SOAP XML RPC 或任何东西 只需一个简单的 POST 页面请求就足够了 我用谷歌搜索了一下 但找不到任何真正有用的东西
  • 在 VBA 中循环合并单元格

    是否可以循环遍历合并的单元格vba questions tagged vba 我的范围内有 6 个合并单元格B4 B40 我只需要这 6 个单元格中的值 6 次迭代 上面的答案看起来已经让你排序了 如果您不知道合并的单元格在哪里 那么您可以
  • VBA根据单元格的值是否为零显示/隐藏行

    我有一个 Excel 工作表 我想根据另一个单元格中的值隐藏或取消隐藏某些行 简而言之 整个事情应该取决于单元格中的值C2 D2 E2 If C2 is blank我想rows 31 to 40被隐藏 如果是的话不为空 他们需要是visib
  • MS Access - 粘贴确认事件后

    当用户将记录直接粘贴到数据表子报表中时 是否可以在显示粘贴确认消息后捕获事件 我需要它能够在审计表中创建新记录时进行记录 通过捕获更新前 更新后和插入事件 我可以轻松创建已添加的记录集合 准备将详细信息插入审核日志 但是在所有这些事件触发后
  • 复制一张工作表上的静态范围,然后根据单元格中的单个值粘贴到另一张工作表中的动态范围

    我对这个问题分为三个部分 我在 Sheet1 A1 中有一个带有周数的单元格 我在 Sheet1 B1 F1 中有一个需要复制的静态范围 然后 我需要将该值粘贴到 Sheet2 中的动态范围中 偏移量为行的周数 这是我正在为我经常使用的工作
  • 在 MS Word 中运行外部 vba 代码

    我可以将外部代码链接到 Word 文档吗 我有很多带有宏的 Word 文档 VBA 代码 全部使用相同的代码 我希望代码从外部源运行 而不是从所有这些文档中运行 这样 如果我必须更新代码 我只有一个地方需要更新 您可以创建一个模板并将其放入
  • VBA中的字符串是可以迭代的数组吗?

    VBA中字符串是数组吗 例如 我可以像在 C C 中那样迭代它吗 做这样的事情 char myArray 10 for int i 0 i lt length i cout lt lt myArray i VBA 中的等价物是什么 它的行为
  • Excel VBA - 添加自定义数字格式

    我有一个在 Excel 外部生成的文件 其中包含许多百分比 所有这些百分比都有一位小数 当导入到 Excel 中时 Excel 会在百分比中添加第二位小数 这似乎是 Excel 中百分比的某种默认格式 它只是添加了一个 0 我想将所有两位小

随机推荐