Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从单元格读取值&;代码对齐_Excel_Vba_Powerquery_Excel 2016_Excel Automation - Fatal编程技术网

Excel 从单元格读取值&;代码对齐

Excel 从单元格读取值&;代码对齐,excel,vba,powerquery,excel-2016,excel-automation,Excel,Vba,Powerquery,Excel 2016,Excel Automation,在过去的几天里,我一直在尝试从web服务获取api数据。我不能以一种更有效的方式来做这件事,我也没有得到我请求的帮助。经过长时间的尝试,我终于通过录制宏从Excel Power Query(2016年版)中获得了它。但是,我有两个问题需要解决,需要帮助 我已将唯一ID保存在范围D1(1152843)中,并将api密钥保存在范围D2(rrwedceckclf1gqiy0pcby05mdd)中。我已经录制了一个宏,并希望在代码中提供单元格值,以便在更改唯一ID或api键时,不必在代码中更改它。我尝试

在过去的几天里,我一直在尝试从web服务获取api数据。我不能以一种更有效的方式来做这件事,我也没有得到我请求的帮助。经过长时间的尝试,我终于通过录制宏从Excel Power Query(2016年版)中获得了它。但是,我有两个问题需要解决,需要帮助

  • 我已将唯一ID保存在范围D1(1152843)中,并将api密钥保存在范围D2(rrwedceckclf1gqiy0pcby05mdd)中。我已经录制了一个宏,并希望在代码中提供单元格值,以便在更改唯一ID或api键时,不必在代码中更改它。我尝试了
    range(d1).value
    ,但是语法太长,引号太多,我弄糊涂了。请帮我编辑那行

  • 录制的宏非常大,有一些不必要的东西需要删除,而且非常长,我需要水平滚动才能读取整行内容。像我这样的初学者很难理解这种布局。请帮助我对齐代码,使其具有可读的格式

  • PS:请运行代码,查看结果,并建议是否有更好的方法获取相同的结果。如果我能得到一些建议,我将不胜感激

    谢谢

    Public apiKey As String
    Public matchID As String
    Sub Macro5()
    
        Range("$A$4").Select
    
        ActiveWorkbook.Queries.Add Name:="Teams", Formula:= _
            "let" & Chr(13) & "" & Chr(10) & "    Source = Json.Document(Web.Contents(""https://cricapi.com/api/fantasySummary?apikey=" & "rrWedCKeclf1GqiY0pCBy05mdd" & "&unique_id=" & "1152843""))," & Chr(13) & "" & Chr(10) & "    data = Source[data]," & Chr(13) & "" & Chr(10) & "    team = data[team]," & Chr(13) & "" & Chr(10) & "    #""Converted to Table"" = Table.FromList(team, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore)," & Chr(13) & "" & Chr(10) & "    #""Renamed Columns"" = Table.RenameColumns(#""Converted " & _
            "to Table"",{{""Column1"", ""Teams""}})," & Chr(13) & "" & Chr(10) & "    #""Expanded Teams"" = Table.ExpandRecordColumn(#""Renamed Columns"", ""Teams"", {""players"", ""name""}, {""Teams.players"", ""Teams.name""})," & Chr(13) & "" & Chr(10) & "    #""Expanded Teams.players"" = Table.ExpandListColumn(#""Expanded Teams"", ""Teams.players"")," & Chr(13) & "" & Chr(10) & "    #""Expanded Teams.players1"" = Table.ExpandRecordColumn(#""Expanded Teams.pl" & _
            "ayers"", ""Teams.players"", {""name"", ""pid""}, {""Teams.players.name"", ""Teams.players.pid""})," & Chr(13) & "" & Chr(10) & "    #""Reordered Columns"" = Table.ReorderColumns(#""Expanded Teams.players1"",{""Teams.name"", ""Teams.players.pid"", ""Teams.players.name""})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Reordered Columns"""
    
            With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
            "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Teams;Extended Properties=""""" _
            , Destination:=Range("$A$4")).QueryTable
            .CommandType = xlCmdSql
            .CommandText = Array("SELECT * FROM [Teams]")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = "Teams"
            .Refresh BackgroundQuery:=False
        End With
    
        Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
        ActiveSheet.ListObjects("Teams").TableStyle = ""
    
        Range("$A$4").Select
    
    End Sub
    

    如果您只需要在查询中使用单元格值作为参数,则不需要VBA。在上签出我的答案。如果您只需要在查询中使用单元格值作为参数,则不需要VBA。查看我的答案。