如何创建将传递查询导出为 XML 文件的 VBA 函数(用于 Access 2010)?

Posted

技术标签:

【中文标题】如何创建将传递查询导出为 XML 文件的 VBA 函数(用于 Access 2010)?【英文标题】:How can I create a VBA function (for Access 2010) that exports pass-through queries as XML files? 【发布时间】:2014-03-18 16:11:28 【问题描述】:

目前,我使用的是 Access 2010。我使用 TSQL 创建和存储了多个传递查询。

以前,我使用以下 VBA 定期导出本机(到 Access 2010)“选择”查询:

Sub ExportToXmlFile()
Application.ExportXML ObjectType:=acExportQuery, DataSource:="Query1", DataTarget:="C:\Desktop\Query1.xml"
Application.ExportXML ObjectType:=acExportQuery, DataSource:="Query2", DataTarget:="C:\Desktop\Query2.xml"
End Sub

但是,自从我将 Query1 和 Query2 重新设计为传递查询后,我收到以下运行时错误:“7798:您只能将选择、交叉表和联合查询保存为这种格式”。

因此,我想知道如何重写上述 VBA 以便能够将我的传递查询导出为 XML 文件?

注意事项:

在研究这个问题的过程中,我偶然发现了以下内容: Can't export a pass through query...Google groups

似乎一个可能的解决方案是将传递查询存储为临时表,然后将临时表导出为 XML 文件。不幸的是,我一直试图重写上面的 VBA 来这样做,但无济于事。

【问题讨论】:

【参考方案1】:

您发现ExportXML 不会接受直通查询。但是,至少在 Access 2007 中,您可以通过创建一个使用传递作为其数据源的新查询来相当轻松地解决该限制。然后ExportXML 将毫无怨言地接受新的查询。

创建此查询并将其保存为qryFromPassthru

SELECT *
FROM Query1;

然后使用 qryFromPassthruExportXML:

Application.ExportXML ObjectType:=acExportQuery, _
    DataSource:="qryFromPassthru", DataTarget:="C:\Desktop\Query1.xml"

【讨论】:

以上是关于如何创建将传递查询导出为 XML 文件的 VBA 函数(用于 Access 2010)?的主要内容,如果未能解决你的问题,请参考以下文章

excel通过VBA导出XML文件时候如何设定编码格式

如何将组合框的值转换为 vba 模块中的字符串?

使用 VBA 将访问表导出为 XML

如何使用 VBA 将 pdf 保存/导出到某个文件夹

访问 VBA 将 CSV 文件导出为 UTF-8

VBA 将 Excel 范围导出到特定目录和文件名