Я пытаюсь выполнить мощный запрос Excel к базе данных доступа, используя значения из ячейки, но продолжаю сталкиваться с ошибкой. У меня почти 0 опыта работы с запросами через VBA, поэтому в итоге я получил 90% кода из устройства записи макросов, поэтому извиняюсь за беспорядок.
Я запустил msgbox по значению, чтобы убедиться, что онивсе правильно вытаскиваю, я просто не уверен, правильно ли я ссылаюсь на затемненные значения.
Sub QueryMacro()
'
' QueryMacro Macro
'
Dim DayRange, MonthRange, YearRange As Range
Dim YR, MR, DR As String
Set DayRange = ThisWorkbook.Sheets(1).Range("A2")
Set MonthRange = ThisWorkbook.Sheets(1).Range("B2")
Set YearRange = ThisWorkbook.Sheets(1).Range("C2")
YR = YearRange.Value
MR = MonthRange.Value
DR = DayRange.Value
ActiveWorkbook.Queries.Add Name:="Task Track", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Access.Database(File.Contents(""C:\Folder\Database_be.accdb""), [CreateNavigationProperties=true])," & Chr(13) & "" & Chr(10) & " #""_Task Track"" = Source{[Schema="""",Item=""Task Track""]}[Data]," & Chr(13) & "" & Chr(10) & " #""Filtered Rows"" = Table.SelectRows(#""_Task Track"", each [DTE] = #datetime(YR, MR, DR, 0, 0, 0))" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & _
"" & Chr(10) & " #""Filtered Rows"""
Sheets.Add After:=ActiveSheet
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Task Track"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Task Track]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
.ListObject.DisplayName = "Task_Track"
.Refresh BackgroundQuery:=False
End With
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub
Для пояснения, ошибка возникает в этом разделе:
#""Filtered Rows"" = Table.SelectRows(#""_Task Track"", each [DTE] = #datetime(YR, MR, DR, 0, 0, 0))"
где вместо статической даты #datetime (2019, 10, 11, 0, 0, 0) я пытаюсь сослаться на затемненное значение YR.
Возвращается с ошибкой 1004: [Expression.Error] Импортированный YR не соответствует экспорту. Вы пропустили ссылку на модуль? "
Насколько я понимаю, он пытается найти YR в базе данных доступа вместо использования значения YR, которое я затемнил.
Помощь?