Ошибка VBA при создании запроса мощности с переменными - PullRequest
0 голосов
/ 19 апреля 2020

У меня проблема с 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

Любая помощь будет оценена по достоинству! Я действительно надеюсь, что у кого-то есть решение этой проблемы.

Большое вам спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...