0

Excel でピボット テーブルを形成する xml データのインポートを自動化しようとしています。データをインポートするには、あるシートからリンクを読み取り/コピーし、結果を別のシートに報告します。この方法の唯一の問題は、私が手動で行っていることです。

このマクロはどのように

Sub retrieveXML2()
'
' pivotdataImport Macro
'

'
    Selection.Copy
    Sheets("data").Select
    ActiveWorkbook.XMLIMport url:= _
        "http://api.sba.gov/license_permit/all_by_state/al.xml", ImportMap:=Nothing, _
        Overwrite:=True, Destination:=Range("$A$2")
    Rows("2:2").Select
    Selection.EntireRow.Hidden = True
    Range("A4").Select
    Selection.End(xlDown).Select
    Range("A29").Select
    Sheets("url").Select
    Range("A3").Select
    Selection.Copy
    Sheets("data").Select
    ActiveWorkbook.XMLIMport url:= _
        "http://api.sba.gov/license_permit/all_by_state/ak.xml", ImportMap:=Nothing, _
        Overwrite:=True, Destination:=Range("$A$29")
    Rows("29:29").Select
    Selection.EntireRow.Hidden = True
    Range("Table2[[#Headers],[count]]").Select
    Selection.End(xlDown).Select
    Range("A59").Select
    Sheets("url").Select
    Range("A4").Select
    Selection.Copy
    Sheets("data").Select
    ActiveWorkbook.XMLIMport url:= _
        "http://api.sba.gov/license_permit/all_by_state/az.xml", ImportMap:=Nothing, _
        Overwrite:=True, Destination:=Range("$A$59")
    Rows("59:59").Select
    Selection.EntireRow.Hidden = True
    Range("A60").Select
    Selection.End(xlDown).Select
    Range("A85").Select
    Sheets("url").Select
    Range("A5").Select
    Selection.Copy
    Sheets("data").Select
    ActiveWorkbook.XMLIMport url:= _
        "http://api.sba.gov/license_permit/all_by_state/ar.xml", ImportMap:=Nothing, _
        Overwrite:=True, Destination:=Range("$A$85")
    Rows("85:85").Select
    Selection.EntireRow.Hidden = True
    Range("A86").Select
    Selection.End(xlDown).Select
    Range("A114").Select
    Sheets("url").Select
    Range("A6").Select
    Selection.Copy
    Sheets("data").Select
    ActiveWorkbook.XMLIMport url:= _
        "http://api.sba.gov/license_permit/all_by_state/ca.xml", ImportMap:=Nothing, _
        Overwrite:=True, Destination:=Range("$A$114")
    Rows("114:114").Select
    Selection.EntireRow.Hidden = True
    Range("A115").Select
    Selection.End(xlDown).Select
    Range("A141").Select
End Sub

必要な場所に実際に配置せずに、任意の量の URL に対してこれらの手順を実行するだけにできますか?

私の他のマクロ

Public Sub retrieveXML()

  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlManual


    Dim lngRow As Long
    Dim strXML As String
    Dim ct As Integer, XMLMap

    Const maxXMLDel = 1
    lngRow = 2

    Do While Cells(lngRow, 1) <> ""
        strXML = Cells(lngRow, 1)
        ActiveWorkbook.XMLIMport url:=strXML, ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$B$" & lngRow)
        lngRow = lngRow + 1
        For Each XMLMap In ActiveWorkbook.XmlMaps
                  XMLMap.Delete
        Next
      Loop

    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = xlAutomatic

End Sub

似たようなことをします。ただし、1 行だけを埋める xml データ用に設計されています。したがって、ピボット テーブルを形成する xml データに適用しようとすると、次の URL に移動したときに、データが既にセルに存在することが通知されます。では、記録されたマクロのアクションを実行するために、2 番目のマクロを作成するにはどうすればよいでしょうか?

テーブルの長さはわかりませんが、前のテーブルの下に移動する必要があります。

4

1 に答える 1

0

ワークブックのどこかに URL とターゲット範囲を含むリストを作成します。

Dim rInput As Range

Set rInput = Sheets("datalinks").Range("A2:B2") 
Do While not IsEmpty(rInput)

    '.... YOUR CODE

    ActiveWorkbook.XMLIMport url:= rInput.Cells(1,1).Value2 _ 
        , ImportMap:=Nothing, _
        Overwrite:=True, Destination:=Range(rInput.Cells(1,2).Value2)

    '.... YOUR CODE

    Set rInput = rInput.Offset(1,0)
Loop
于 2013-03-26T13:20:23.567 に答える