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 番目のマクロを作成するにはどうすればよいでしょうか?
テーブルの長さはわかりませんが、前のテーブルの下に移動する必要があります。