【问题标题】:Getting an Invalid procedure call or Argument error in power query Excel VBA在电源查询 Excel VBA 中获取无效的过程调用或参数错误
【发布时间】:2020-09-03 13:28:48
【问题描述】:

我正在尝试通过电源查询提取数据,但我收到“无效的过程调用或参数”错误

我尝试过使用数组和 lin 输入的其他选项,但由于它们花费了太多时间,我不得不转向另一个选项。

错误在行: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

源公式查询是从 power 查询编辑器复制粘贴的,我刚刚使用了额外的转义字符。

【问题讨论】:

    标签: excel vba import text-files powerquery


    【解决方案1】:

    研究了一天后,我发现了另一种解决方法,可以导入带分隔符的相同文本文件。

    我没有通过加载表的电源查询来完成,而是记录了一个宏并进行了一些调整

    以下是更新后的代码:

    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 ()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多