无论文件路径如何,VBA中的QueryTables.Add都会添加相同的文件

时间:2018-08-29 15:24:20

标签: excel vba sharepoint

预先感谢您的帮助!

在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

但是,如此令人费解的是,导入的数据 not 对应于我传入的实际文件。无论传入什么,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被“卡住”在拉同一个文件中,而不管我传递的是哪个文件路径。发生什么情况了吗?

非常感谢您!

1 个答案:

答案 0 :(得分:0)

我知道到现在这个问题已经很老了,但是我在任何地方都没有找到解决这个问题的方法。我只看到2条关于该问题的参考书。

我发生了同样的问题。我能正常工作的另外两个示例,我也测试了另一个能正常工作的示例。

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