thomas1972
Goto Top

Alle XML Dateien eines Ordners in Excel per VBA einlesen

Guten Morgen,

ich möchte bestimmte XML Dateien eines Ordner in eine Mappe hintereinander einlesen.

Eine Datei bekomme ich ohne Probleme hin, nur die Schleife leider nicht

     Sub import()
     Dim strTargetFile As String
     Application.DisplayAlerts = False
     strTargetFile = "C:\Users\thomas\Desktop\xml2\Neuer Ordner\HID1_PROD*.xml"  
     Workbooks.OpenXML Filename:=strTargetFile, LoadOption:=xlXmlLoadImportToList
     Application.DisplayAlerts = True

     End Sub

Content-ID: 289747

Url: https://administrator.de/forum/alle-xml-dateien-eines-ordners-in-excel-per-vba-einlesen-289747.html

Ausgedruckt am: 23.12.2024 um 02:12 Uhr

Meierjo
Meierjo 01.12.2015 aktualisiert um 09:30:12 Uhr
Goto Top
Hallo

In etwa so (ungetestet)
Sub Import
      Dim strPath As String
      Dim strTargetFile As String
      Application.DisplayAlerts = False
      strPath = "C:\Users\thomas\Desktop\xml2\Neuer Ordner\"  
      strTargetFile = Dir(strPath & "*.xml")  
      Do Until strTargetFile = ""  
      Workbooks.OpenXML Filename:=strPath & strTargetFile, LoadOption:=xlXmlLoadImportToList
      Application.DisplayAlerts = True
      strTargetFile = Dir
      Loop
End Sub

Gruss Urs
thomas1972
thomas1972 01.12.2015 um 09:49:28 Uhr
Goto Top
Dank für den Ansatz,,
klappt bestens.
hab nur übersehen, dass er jedes mal eine neue Mappe aufmacht.
Wo kann ich Excel sagen., dass er in die bestehende Mappe schreiben soll?

Grüße aus München
Meierjo
Meierjo 01.12.2015 um 10:08:09 Uhr
Goto Top
Hallo

Freut mich, dass es soweit klappt.
Soll er jede XML Datei in eine separate Tabelle schreiben??

Gruss
thomas1972
thomas1972 01.12.2015 um 10:50:08 Uhr
Goto Top
Nein,
es sollen alle XML Dateien hintereinander eingefügt werden. so das am schluss eine grosse Tabelle angelegt ist.
114757
114757 01.12.2015 aktualisiert um 20:03:48 Uhr
Goto Top
Moin Thomas,
hiermit geht das z.B. wie gewünscht...
es sollen alle XML Dateien hintereinander eingefügt werden. so das am schluss eine grosse Tabelle angelegt ist.
Sub ImportXML()
    Const XMLPATH ="C:\Users\thomas\Desktop\xml2\Neuer Ordner"   
    Dim f As Object, c As Object
    Set fso = CreateObject("Scripting.Filesystemobject")  
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    With Sheets(1)
        For Each f In fso.GetFolder(XMLPATH).Files
            If LCase(fso.GetExtensionName(f.Name)) = "xml" Then  
                ActiveWorkbook.XmlImport URL:=f.Path, ImportMap:=Nothing, Overwrite:=True, Destination:=.Range("A" & .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)  
                ActiveWorkbook.Connections(ActiveWorkbook.Connections.Count).Delete
            End If
        Next
    End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "Importvorgang beendet!", vbInformation  
    Set fso = Nothing
End Sub
Gruß jodel32