Получение недопустимого вызова процедуры или ошибки аргумента в запросе мощности Excel VBA

Я пытаюсь получить данные с помощью запроса мощности, но получаю сообщение об ошибке «неверный вызов процедуры или аргумент».

Я пробовал другие варианты, используя массивы и линейный ввод, но, поскольку они занимали слишком много времени, мне пришлось переключиться на другой вариант.

Ошибка в строке: ActiveWorkbook.Queries.Add Name:=QueryName, Formula:=SourceFormula)

Ниже приведен код:

Sub Import_AACR()

Dim QueryName, SourceFormula, ConnStr As String

QueryName = "AACR_Pull"

SourceFormula = "let Source = Csv.Document(File.Contents(""C:\ENDO AACR\AACR_20200123_2020Q1_V6.0.txt""),[Delimiter=""|"", Columns=27, Encoding=1252, QuoteStyle=QuoteStyle.None])," & _
    "#""Promoted Headers"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & _
    "#""Changed Type"" = Table.TransformColumnTypes(#""Promoted Headers"",{{""REQUEST#"", Int64.Type}, {""REQUEST_SUBMIT_DT"", type text}, {""REQUEST_SUBMIT_TYPE"", type text}, {""SALES_TEAM"", type text}, {""DM_NAME"", type text}, {""STATUS"", type text}})in #""Changed Type"""


ActiveWorkbook.Queries.Add Name:=QueryName, Formula:=SourceFormula


Connstr = "OLEDB;" & _
"Provider = Microsoft.Mashup.OleDb.1;" & _
"Data Source = $Workbook$;" & _
"Location=""AACR_Pull"";" & _
"Extended Properties="""""


With ActiveSheets.ListObjects.Add(SourceType = xlSrExternal, _
LinkSource:=True, _
xlListObjectHasHeaders:=xlYes, _
Source:=Connstr, _
TableStyleName:="TableStyleMedium8", _
Destinatio:=Range("A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [AACR_Pull]")
.Refresh BackgroundQuery = False
End With

End Sub

Запрос исходной формулы скопирован из редактора мощных запросов, и я только что использовал дополнительные escape-символы.


person user2492144    schedule 17.05.2020    source источник


Ответы (1)


Изучив его в течение дня, я нашел другой обходной путь для импорта того же текстового файла с разделителями.

Вместо того, чтобы делать это через power query, который загружает таблицу, я записал макрос и сделал некоторые настройки.

Ниже приведен обновленный код:

Sub Load_File()

    Dim Old_File_Name As String
    Dim New_File_Name As String

    Old_File_Name = Worksheets("SUMMARY").Range("I3").Value
    New_File_Name = Worksheets("SUMMARY").Range("I4").Value

    File_Path_Old = "C:\ENDO AACR" & "\" & Old_File_Name
    File_Path_New = "C:\ENDO AACR" & "\" & New_File_Name

Application.ScreenUpdating = False

    Worksheets("OLD").Range("A1:AA1500").ClearContents
    ChDir "C:\Filepath"
    Workbooks.OpenText Filename:=File_Path_Old, _
        Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
        Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:= _
        Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7 _
        , 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array _
        (14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), _
        Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array( _
        27, 1)), TrailingMinusNumbers:=True
    Range("A1:AA1500").Select
    Selection.Copy
    Windows("AACR_Automated.xlsm").Activate
    ThisWorkbook.Worksheets("OLD").Select
    Worksheets("OLD").Range("A1").Select
    ActiveSheet.Paste

    Application.CutCopyMode = False

    Workbooks(Old_File_Name).Activate
    ActiveWindow.Close

    Application.ScreenUpdating = True
    End Sub ()
person user2492144    schedule 19.05.2020