У меня проблема с VBA. Я хочу создать запрос питания и получаю эту ошибку: ошибка времени выполнения 1004, ошибка приложения или объекта. Я действительно не знаю, как это исправить, и очень надеюсь, что кто-то может мне помочь.
Это мой код:
Sub Makro1()
Dim varName As Variant
varName = Range("A1").Value
Dim varSource As Variant
varSource = Range("A2").Value
ActiveWorkbook.Queries.Add Name:=varName, Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Csv.Document(File.Contents(""" & varSource & """),[Delimiter="","", Columns=10, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Höher gestufte Header"" = Table.PromoteHeaders(Quelle, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Analysierte JSON"" = Table.TransformColumns(#""Höher gestufte Header"",{{""<OPEN>"", Json.Docum" & _
"ent}, {""<HIGH>"", Json.Document}, {""<LOW>"", Json.Document}, {""<CLOSE>"", Json.Document}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Analysierte JSON"""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""" & varName & """;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM varName")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.Name = varName
.Refresh BackgroundQuery:=False
End With
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("L15").Select
End Sub
В этом коде у меня есть две переменные. Оба находятся в листе Excel. Переменная varName - это имя запроса, а varSource - источник ссылки Windows Explorer.
Это текущие значения в листе Excel: 1.) varName: appf us 2.) varSource: C: \ Users \ Thoma \ Downloads \ Neuer Ordner \ appf.us.txt
Я думаю, что ошибка должна быть где-то в переменной varName. Потому что, когда я вставляю значения переменных в код, это работает. Но когда я запускаю макро, он создает соединение с запросом питания, но не загружает данные. Когда я тогда go "редактирую запрос мощности" и смотрю на источник, я вижу, что источник правильный. Так что ошибка должна быть с varName.
Также, когда я отлаживаю код, он говорит мне, что ошибка возникает в этой строке: .Refre sh BackgroundQuery: = False
Я также не надену У меня нет других запросов или запросов с таким же именем в книге Excel.
И это код создания запроса мощности, который я записал с помощью макрокордера и без переменных стенда:
Sub Makro1()
ActiveWorkbook.Queries.Add Name:="appf us", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Csv.Document(File.Contents(""C:\Users\Thoma\Downloads\Neuer Ordner\appf.us.txt""),[Delimiter="","", Columns=10, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Höher gestufte Header"" = Table.PromoteHeaders(Quelle, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Analysierte JSON"" = Table.TransformColumns(#""Höher gestufte Header"",{{""<OPEN>"", Json.Docum" & _
"ent}, {""<HIGH>"", Json.Document}, {""<LOW>"", Json.Document}, {""<CLOSE>"", Json.Document}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Analysierte JSON"""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""appf us"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [appf us]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "appf_us"
.Refresh BackgroundQuery:=False
End With
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("L15").Select
End Sub
Здесь вы можете скачать текстовый файл, с которым я работаю: https://drive.google.com/file/d/1Krv2JRV88dAhTTfp4xB1nwqs1u9_q7m3/view?usp=sharing
Любая помощь будет оценена по достоинству! Я действительно надеюсь, что у кого-то есть решение этой проблемы.
Большое вам спасибо!