我正在尝试根据某些输入值提取访问查询。 拉出正确的查询是可行的,但它会卡在标记位置,因为它不接受变量,只是按原样写出来。
有没有人知道的解决方法?
Dim BDMA As String
BDMA = Me.ListBDMA.Value
ActiveWorkbook.Queries.Add Name:=BDMA, Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Access.Database(File.Contents(""X:\Pierburg\Berlin\_Common\010 Standort Berlin\300 Datenbanken\Schichtbericht.accdb""), [CreateNavigationProperties=true])," _
& Chr(13) & "" & Chr(10) & " #""_Band 3"" = Quelle{[Schema="""",Item=" & BDMA & "]}[Data]" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""_Band 3"""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location="" & BDMA & "";Extended Properties=""""" _
, Destination:=Range("$A$5")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [" & BDMA & "]") '<----- Here is the Problem ----------
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
.ListObject.DisplayName = "Band_3"
.Refresh BackgroundQuery:=False
End With
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
问候
错误说:
未找到查询“& BDMA &”。
这表明我不能使用这样的变量。有什么想法吗? 我还尝试事先创建一个数组并使用它,但这也不起作用。
问题来了
.CommandText = Array("SELECT * FROM [" & BDMA & "]")
确实如此。这里的
Array()
功能不需要也没有帮助。这意味着代码将尝试将字符数组而不是字符串分配给 CommandText
属性,而您需要一个字符串。所以它看起来就像这样:
.CommandText = "SELECT * FROM [" & BDMA & "]"
可能还有其他问题,但从这里开始。