我需要进行重复查询,但我确实卡住了查询名称,每次都必须手动更改它们,例如Name_1,Name_2等。原始代码如下:
ActiveWorkbook.Queries.Add Name:="Name_1", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Folder.Files(""C:\EXCHANGER\LastStage BOX"")
Sheets.Add After:=Sheets(1)
Sheets(2).Name = "INDEX"
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Name_1"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Name_1]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Name_1"
.Refresh BackgroundQuery:=False
End With
Tome使它充满活力,到目前为止,我已经有了类似的东西
Dim i As Integer
i = 1
ActiveWorkbook.Queries.Add Name:=i, Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Folder.Files(""C:\EXCHANGER\LastStage BOX"")
Sheets.Add After:=Sheets(1)
Sheets(2).Name = "INDEX"
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=i;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [i]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = i
.Refresh BackgroundQuery:=False
End
并且代码滚动正常,直到出现
.ListObject.DisplayName = i
仅处理字符串。对此有任何解决方法吗?
答案 0 :(得分:0)
好像我终于找到了答案。最好删除子查询末尾的当前查询,而不是尝试通过变量使其动态化
ActiveWorkbook.Queries("Name_1").Delete
Delete a query from excel workbook with Vba
谢谢大家的投入!