如何使用 VBA 更新 Excel 工作簿 Web 查询连接字符串?

Posted

技术标签:

【中文标题】如何使用 VBA 更新 Excel 工作簿 Web 查询连接字符串?【英文标题】:How do I update an Excel Workbook Web Query Connection String using VBA? 【发布时间】:2019-04-26 20:06:34 【问题描述】:

我正在尝试修改 Web Query 连接字符串

使用 VBA,但是我在网上找到的所有答案都提供了需要 QueryTable 的解决方案,但由于this post explains 的原因,我的工作簿没有 QueryTable。我拥有的是一个带有 XML 映射属性的列表对象。

我尝试过使用外部数据范围查询表,

但格式是通过按字母顺序修改的列标题来实现的。

理想情况下,我只想修改现有连接字符串上的 GUID(因为它们已过期并且需要定期更新),以便它保留来自我的源的 XML 格式。如果这不可能,而我唯一的选择是使用 QueryTable,那么我想要一种方法来格式化 QueryTable 的结果,以便列标题不包含“/row/@”。

【问题讨论】:

连接应该可以通过ThisWorkbook.Connections检索 这是问题的一部分;我找到用于更新 ConnectionString 而不是 QueryTable 的解决方案,指定一个 OLEDB 连接,但我的是一个 XMLMAP,当我尝试将其分配为 WorkbookConnection 时,我得到过多的 错误. !Object Errors 这是非常重要的信息,绝对值得包含在您的问题 (edit) 中,作为“您尝试过的内容”的一部分。你能把它变成一个 PowerQuery 连接吗? 我确实将它包含在我原来的问题中。 “我拥有的是一个带有 XML 映射属性的列表对象。” 我可以尝试使用 PowerQuery;这是否意味着无法更新附加到 XMLMap 的 URL? Trying to read through this documentation atm. 【参考方案1】:

我在这里找到了一个可行的解决方案:https://www.mrexcel.com/forum/excel-questions/750075-vba-update-connection-path-xml-data.html

最终工作代码:

Sub RefreshXML_Click()
Dim GetProjects As String: GetProjects = "http://api.aceproject.com/?fct=getprojects&guid=" & Cerberus.GUID & "&Filtercompletedproject=False&projecttemplate=0&assignedonly=True&format=xml"
With Sheets("GetProjects").ListObjects("Table1").XmlMap.DataBinding
    .ClearSettings
    .LoadSettings GetProjects
    .Refresh
End With
End Sub

解决方案是清除然后重新加载 DataBinding,因为它是一个无法编辑的只读字段。所有其他解决方案都专注于尝试修改查询表(使用导入向导时不存在)

【讨论】:

以上是关于如何使用 VBA 更新 Excel 工作簿 Web 查询连接字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA > 公式在保存工作簿之前不会更新

如何使用vba在excel2010中将保存类型从excel工作簿更改为excel 97-2003?

excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决

如何用VBA把一个工作簿中的工作表内容复制到另一个汇总工作簿里面的指定的工作表里面去?

如何在 Excel VBA 中声明全局变量在工作簿中可见

Excel VBA - 循环遍历多个文件夹中的文件,复制范围,粘贴到此工作簿中