如何使用 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 查询连接字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用vba在excel2010中将保存类型从excel工作簿更改为excel 97-2003?
excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决