Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

XMLS Import nach XLS 2002 (XP)





Frage

Hallo, ich habe ein Exceldokument (Final_Uebersicht.xls). Dieses XLS-Datei soll den Input auf einem immer gleich lautenden XML-Datei beziehen. Wobei die Daten die benötigt werden in dem XML-Dokument immer in Zeile drei stehen und das XML-File immer wieder überschrieben wird (gleicher Dateiname). Das XLS-Dokument müsste allerdings bei jedem Import eine Zeile weiter herunterspringen. So dass, sobald fünf XML-Dokumente eingegangen sind, auch fünf Einträge in der XLS-Datei wären. Hat jemand eine Lösung oder kann mir eine unschlagbar gute Webseite nennen, bei der ich eine Anleitung finde. Im Idealfall soll immer nur die XLS-Datei geöffnet werden. Die muss dann natürlich schauen, ob eine XML-Datei im gleich Ordner liegt und ggf. die Daten importieren.

Antwort 1 von coros

Hi SendXP,

es fehlen für eine Lösung einige Angaben.

Wieviele XML-Dateien liegen in dem Verzeichnis? Immer nur eine oder erhöht sich die Zahl. Sollten sich mehrere Dateien in dem Verzeichnis befinden, ist dass dann schlimm, wenn in der Datei, in der die Daten eingefügt werden sollen, in einer Spalte z.B. in Spalte IV, der Name der Datei, zu der die ausgelesenen Daten gehören aufgeführt werden? Das müsste man irgendwie machen, damit man weiß, welche Daten bereits importiert wurden. Aber wie gesagt, das nur wenn sich mehr al eine XLM-Datei in dem verzeichnis befindet.

In welcher Spalte in der XML-Datei stehen die Daten, die kopiert werden sollen oder soll die gesamte Zeile 3 kopiert werden?

Wo sollen die Daten eingefügt werden (welche Spalte)?

Bitte beantworte die Fragen und dann dürfte einer Lösung nichts im Wege stehen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Sendor

Hallo Coros,

in dem Verzeichnis werden insgesamt zwei Dateien liegen. Die XLS-Datei und die XML-Datei. Im Laufe der Zeit wird es immer mehr XML-Dateien geben. Da die XML-Dateien aus einem PDF-Formular generiert werden, haben alle XML-Dateien den gleichen Namen. Das ist nicht weiter schlimm, da sie für die Archivierung umbenannt werden.
Ich habe also "eine" XML-Datei. Nenne ich sie hier XML-DAT. Diese XML-DAT kopiere ich in den Ordner (Ordnername = Folder) in dem meine XLS-Datei liegt. Die XML-DAT wird also immer wieder überschrieben. Der Inhalt der XML-DAT ist jedoch immer anders (Name, Vorname, Strasse, usw.). Die Daten, in XML-DAT die interessant sind, stehen immer in Zeile drei. Wobei die Sortierreihenfolge im XLS "deutschüblich" (Vorname, Nachname, Strasse, PLZ, usw.) sein soll. XML-DAT liefert die Daten leider in alphabethischer Reihenfolge.
Die Zeile drei aus XML-DAT soll immer als letzte Zeile in das XLS-Dokument. Meine also: habe ich bereits sieben Datensätze importiert, dann wandert der nächste Datensatz aus XML-DAT in XLS Zeile 8.
XML-DAT und die XLS-Datei haben beiden 15 Spalten (andere Sortierreihenfolge).
Einer Umschichtung (neue Sortierreihenfolge) in der XLS-Datei steht nichts im Wege. Es kann auch ein weiteres XLS-Sheet genutzt werden.

Antwort 3 von coros

Hi SendXP,

kopiere nachfolgendes Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.

Option Explicit

Sub Daten_importieren()
Dim Dateiname_XLS As String, Dateiname_XML As String, Pfad As String
Application.ScreenUpdating = False
Dateiname_XLS = "Deine Datei.xls"
Dateiname_XML = "XML-DAT.xml"
Pfad = "D:\"
Workbooks.Open Filename:=Pfad & Dateiname_XML
Workbooks(Dateiname_XML).Sheets("Tabelle1").Rows(3).Copy _
Workbooks(Dateiname_XLS).Sheets("Tabelle1"). _
Cells(Workbooks(Dateiname_XLS).Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(1, 0).Row, 1)
Workbooks(Dateiname_XML).Close
End Sub


Mit dem Makro wird in dem Pfad "D:\" die Werte aus der Datei "XML-DAT.xml" Zeile 3 in die Datei "Deine Datei.xls" in die erste freie Zeile importiert.

Du musst allerdings das Makro noch anpassen. In dem Makro in der Zeile

Dateiname_XLS = "Deine Datei.xls"

musst Du den Text "Deine Datei.xls" gegen den Dateinamen Deiner Exceldatei tauschen. Trage den Namen bitte zwischen die beiden Anführungszeichen ("") ein. Dann musst Du in dem Makro in der Zeile

Dateiname_XML = "XML-DAT.xml"

den Namen Deiner XML-Datei ebenfalls zwischen den Anführungszeichen eintragen. Dann zu guter letzt musst Du in der Zeile

Pfad = "D:\"

den korrekten Pfad, in dem Deine XML-Datei liegt, angeben.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.