【发布时间】: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