【问题标题】:How do I overwrite a macro of a linked table in MS Access using VBA?如何使用 VBA 在 MS Access 中覆盖链接表的宏?
【发布时间】:2017-03-20 16:50:21
【问题描述】:

我有一个拆分访问数据库。驻留在后端的表具有内置的“更改前”宏(在后端)。我需要用新的宏覆盖这些宏。我有一个更新宏的 XML 文件,我正在尝试使用下面的代码来覆盖宏。但是,下面的代码将宏放在我的 frontend 中的链接表中。我需要宏来更新后端中表上的宏。非常感谢任何和所有帮助。

LoadFromText acTableDataMacro, "tblEXAMPLE", strXMLpath

【问题讨论】:

  • 这是一次性活动?转到后端并运行代码。
  • 我会,除非这是对许多人已经在使用的数据库的更新的一部分。我需要从新的前端推送更新。我想我找到了解决办法。我会尽快发布。感谢您的回复。

标签: ms-access vba


【解决方案1】:

我想出了如何做到这一点。

Dim fso As Object
Dim oFile As Object
Dim strXML As String
Dim strXMLpath As String
Dim strBE As String
Dim accessApp As Access.Application

strXML = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-16" & Chr(34) & " standalone=" & Chr(34) & "no" & Chr(34) & "?>" & _
"<DataMacros xmlns=" & Chr(34) & "http://schemas.microsoft.com/office/accessservices/2009/11/application" & Chr(34) & "><DataMacro Event=" & Chr(34) & "BeforeChange" & Chr(34) & "><Statements><ConditionalBlock><If>"

strXMLpath = Application.CurrentProject.Path & "\XML_File.xml"

Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.CreateTextFile(strXMLpath)
oFile.WriteLine strXML
oFile.Close
Set fso = Nothing
Set oFile = Nothing

strBE = CurrentDb.TableDefs("TableName").Connect
strBE = Replace(strBE, ";Database=", "")

Set accessApp = CreateObject("Access.Application")
accessApp.OpenCurrentDatabase strBE, True

accessApp.LoadFromText acTableDataMacro, "TableName", strXMLpath

Kill strXMLpath

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2011-03-22
    • 1970-01-01
    相关资源
    最近更新 更多