【问题标题】:QueryTables.Add in VBA Adds Same File Regardless Of Filepath无论文件路径如何,VBA 中的 QueryTables.Add 都会添加相同的文件
【发布时间】:2026-01-17 07:05:02
【问题描述】:

提前感谢您的帮助!

在 VBA 中,我使用以下代码从存储在 Sharepoint 中的 IQY 文件中提取数据(由于“导入数据”提示,Workbooks.Open 不是一个很好的选择):

Function getIQYWorkbook(ByVal filename As String) As Workbook
Dim wb As Workbook
Set wb = Workbooks.Add
Dim IQYFile As String
IQYFile = ThisWorkbook.Path & "/" & filename

With wb.Sheets("Sheet1").QueryTables.Add(Connection:= _
   "FINDER;" & IQYFile, Destination:=Range("A1"))

    .BackgroundQuery = True
    .TablesOnlyFromHTML = True
    .Refresh BackgroundQuery:=False
    .SaveData = True
End With

Set getIQYWorkbook = wb

End Function

然而,如此奇怪的是,被拉入的数据确实对应于我传入的实际文件。无论我传入什么,Sharepoint 中的一个特定 IQY 文件文件夹已下载。这令人沮丧,因为这个函数是在一个循环中调用的,它传入不同的文件名。

例如,当我使用以下代码时(注意我将文件路径设置为单词“dogs”,这很荒谬),仍然会拉入相同的共享点文件。

Function getIQYWorkbook(ByVal filename As String) As Workbook
Dim wb As Workbook
Set wb = Workbooks.Add
Dim IQYFile As String
IQYFile = "dogs"

With wb.Sheets("Sheet1").QueryTables.Add(Connection:= _
   "FINDER;" & IQYFile, Destination:=Range("A1"))

    .BackgroundQuery = True
    .TablesOnlyFromHTML = True
    .Refresh BackgroundQuery:=False
    .SaveData = True
End With

Set getIQYWorkbook = wb

End Function

这种情况在重新启动/关闭 Excel/等时仍然存在。就好像 QueryTables.Add 在拉同一个文件时“卡住”了,无论我传入哪个文件路径。关于发生了什么的任何想法?

非常感谢!

【问题讨论】:

  • 如果您检查实际的工作簿连接,之后您会看到什么?
  • 奇怪的是,我没有看到任何连接...包括在查询生成器中。或者更确切地说,存在一个连接,但它似乎没有“包含”任何东西。
  • 当它循环时,当前的连接被添加到完全不同的工作簿中! (因为您看到新工作簿的暗淡)。在任何情况下,即使我在第一次循环中将“dog”作为文件路径传递,它仍然会提取错误的文件,这表明 excel 正在将其保存在重启后仍然存在的地方。

标签: excel vba sharepoint


【解决方案1】:

我意识到这个问题现在已经很老了,但我还没有在任何地方看到这个问题的解决方案。关于这个问题,我只看到了 2 个参考总数。

我遇到了同样的问题。其他 2 个我运行良好的示例,我测试了第三个也运行良好的示例。

我的结论是 SharePoint 列表正在生成一个错误或损坏的 .IQY 文件。我从我的 SharePoint 列表中尝试了各种导出,但都失败了。所以我没有解决办法!我的解决方法计划是使用 O365 中的 Power Query 来访问 Excel 文件中的数据。这样可以避免 .IQY 文件的弹出窗口。

【讨论】: