0

InfoPath フォームを使用してフィールド チームからデータを収集しています。完成したフォームはすべて、標準の InfoPath XML 形式で保存されます。ここで、これらすべての XML ファイルを Excel にインポートして、レポートをコンパイルしたいと考えています。私は一度に 1 つの XML ファイルを作成していましたが、もちろんばかげています。とにかく、友人がこの Excel VB マクロ コードを作成して、複数の XML ファイルを Excel シート タブ (XMLData) にインポートし、データを別のタブ (結果) にきれいにコピーしました。問題は、XML ファイル内のデータが順不同で Excel 列にインポートされることです。これに対するコードの簡単な修正はありますか? Excel VB マクロ コードは次のとおりです。

Sub ReadXML()
    Dim strFile As String
    MsgBox "I'll start reading please don't touch the computer"
    Dim strPath As String
    Dim colFiles As New Collection
    Dim i As Integer
    Dim wb As Workbook
    strPath = ActiveSheet.Range("C2")
    strFile = Dir(strPath)
    While strFile <> ""
        colFiles.Add strFile
        strFile = Dir
    Wend
    If colFiles.Count > 0 Then
        For i = 1 To colFiles.Count
             Application.ScreenUpdating = False
             Application.DisplayAlerts = False
             strTargetFile = strPath & colFiles(i)

             Set wb = Workbooks.OpenXML(Filename:=strTargetFile, LoadOption:=xlXmlLoadOpenXml)
             Application.DisplayAlerts = True

             wb.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets("XMLDATA").Range("A" & i * 3 + 1)
             ThisWorkbook.Sheets("XMLDATA").Rows(i * 3 + 3).Copy ThisWorkbook.Sheets("Result").Range("A" & i + 2)
             wb.Close False
             Application.ScreenUpdating = True
             ActiveSheet.Range("P2") = i
        Next i
        ThisWorkbook.Sheets("XMLDATA").Rows(4).Copy ThisWorkbook.Sheets("Result").Rows(1)
        ThisWorkbook.Sheets("XMLDATA").Rows(5).Copy ThisWorkbook.Sheets("Result").Rows(2)
        MsgBox "I'm Done!"
    End If
End Sub

InfoPath XML ファイルを Excel にインポートするための、よりシンプルで洗練されたソリューションがあるかもしれませんが、まだ見つかっていません。あなたの助けに感謝します。

4

2 に答える 2