Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
636to640
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
636to640
636to640
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Text aus Files auslesen und in Zellen schreiben

Text aus Files auslesen und in Zellen schreiben
15.07.2005 13:45:24
Norbert
Liebe User,
ich habe eine Frage an euch. Und zwar geht es um Folgendes:
Ich habe ein Excel-File (GESAMT.xls), das 2 Kombinationsfelder hat. In diesen Feldern sind jeweils die Werte YES und NO möglich.
Die Felder sind auf Zellenplatz D10 und D31 im File GESAMT.xls.
Über einen Button möchte ich nun:
Wenn in Zelle D10 YES gestanden ist, aus dem Verzeichnis E:\ die Files A.xls und B.xls öffnen und aus beiden Files den Wert zwischen den Tags und "erfragen". Wenn in beiden Files der Wert zwischen den Tags 0 ist, dann soll der Text zwischen den Tags und aus dem File A.xls in die Zelle D56 von GESAMT.xls geschrieben werden und der Text zwischen den Tags und aus dem File B in die Zelle D57 von GESAMT.xls geschrieben werden. Wenn die Files A.xls und B.xls nicht im Verzeichnis vorhanden sind, dann soll eine Fehlermeldung kommen. Steht der Wert hinter der zelle D10 auf NO, dann soll gar nichts mit den Files A.xls und B.xls geschehen
Wenn in Zelle D31 YES gestanden ist, aus dem Verzeichnis E:\ das File C.xls öffnen und aus dem File den Wert zwischen den Tags und auslesen. Wenn in dem File der Wert zwischen den Tags 0 ist, dann soll der Text zwischen den Tags und aus dem File C.xls in die Zelle D58 von GESAMT.xls geschrieben werden. Wenn das File C.xls nicht im Verzeichnis vorhanden sind, dann soll eine Fehlermeldung kommen. Steht der Wert hinter der Zelle D31 aber auf NO, dann soll gar nichts mit dem File C.xls geschehen!
Klingt kompliziert die Beschreibung, ich hoffe es findet sich ein Könner für dieses knifflige Problem. Ich bin leider nicht gut in Excel und VBA und würde mich über ein Lösungsskript sehr freuen und dankbar sein.
Alles Liebe an euch,
Norbert

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text aus Files auslesen und in Zellen schreiben
15.07.2005 14:06:11
IngGi
Hallo Norbert,
ich weiß, was ein HTML-Tag ist, aber was bitteschön ist denn ein Tag in einer Excel-Datei? Und was verbirgt sich hinter dem Tag und?
Etwas verwirrte Grüße Ingolf
AW: Text aus Files auslesen und in Zellen schreiben
15.07.2005 20:21:58
Norbert
Hallo Ingolf,
ich habe in dem Excel-File mehrere Tabellenblätter, das habe ich vergessen zu schreiben. Sorry. In diesen Tabellenblättern habe ich die Tags hineingeschrieben und diese Tabellenblätter gebe ich als XML-Files aus. Von einem Programm auf einem Server werden daraus sogenannte "export"-Files erzeugt; diese sind wieder XML-Files. Und diese möchte ich öffnen und abfragen.
Die Files A, B und C, die ich oben beschrieben habe sind also keine Excel-Files (Fehler meinerseits!) sondern XML-Files mit Tags. Und die Export-Files haben dann zusätzliche Tags und Werte dazwischen, die für mich wichtig sind, vor allem eben der Wert 0 zwischen 2 Tags des Export-Files (das bedeutet im Export-File, dass das Serverprogramm die Daten meines Files ohne Fehler in ein anderes Programm weitergeleitet hat).
Ich hoffe du kannst mir weiterhelfen!
LG
Norbert
Anzeige
AW: Text aus Files auslesen und in Zellen schreiben
18.07.2005 14:38:09
IngGi
Hallo Norbert,
laß' mich zunächst vorausschicken, dass ich mich mit XML-Dateien so gut wie überhaupt nicht auskenne. Allerdings weiß ich zumindest so viel, dass man XML-Dateien wie normale Textdateien behandeln kann. Und so sieht auch mein Lösungsweg aus. Ich bin dabei von einer ganzen Reihe von Annahmen ausgegangen, zu denen ich von dir evtl. noch nähere Angaben benötige, falls etwas so nicht zutrifft.
Was deine Datei Gesamt.xls angeht, so habe ich angenommen, dass die beiden Kombinationsfelder sich auf dem ersten (einzigen?) Tabellenblatt befinden und Standardnamen haben, nämlich ComboBox1 (D10) und ComboBox2 (D37).
Wenn ich dich richtig verstanden habe, dann befinden sich in den XML-Dateien jeweils Tags mit der Bezeichnung "und", also "&ltund&gt" als Anfangstag bzw. "&lt/und&gt" als Endtag. Und dazwischen befindet sich entweder ein Wert ungleich 0 oder ein Text, der als Wert ausgewertet eben 0 ergibt. Ist der Wert gleich 0, also ein Text vorhanden, so soll dieser Text übernommen werden, andernfalls wird nichts übernommen.
Was die Struktur der XML-Datei angeht, so setze ich voraus, dass die Einträge zusammen mit Anfangs- und Endtag jeweils auf einer Zeile stehen, korrekt durch Zeilenendzeichen getrennt.
Das ergibt dann das folgende Makro als 1. Versuch:

Sub Daten_holen()
Dim Dat As Byte, str As String, nofile As Boolean
If ThisWorkbook.Sheets(1).ComboBox1 = "YES" Then
Dat = FreeFile
On Error GoTo Fehler
Open "E:\A.xml" For Input As #Dat
On Error GoTo 0
If nofile = False Then
Do
Line Input #Dat, str
Loop Until InStr(1, str, "</und>", vbTextCompare) > 0
str = Left(str, InStr(1, str, "</und>", vbTextCompare) - 1)
str = Right(str, Len(str) - InStr(1, str, ">", vbTextCompare))
If IsNumeric(str) = False Then ThisWorkbook.Sheets(1).Range("D56") = str
Close #Dat
Else
MsgBox ("Datei " & Chr$(34) & "E:\A.xlm" & Chr$(34) & " nicht vorhanden!")
nofile = False
End If
Dat = FreeFile
On Error GoTo Fehler
Open "E:\B.xml" For Input As #Dat
On Error GoTo 0
If nofile = False Then
Do
Line Input #Dat, str
Loop Until InStr(1, str, "</und>", vbTextCompare) > 0
str = Left(str, InStr(1, str, "</und>", vbTextCompare) - 1)
str = Right(str, Len(str) - InStr(1, str, ">", vbTextCompare))
If IsNumeric(str) = False Then ThisWorkbook.Sheets(1).Range("D57") = str
Close #Dat
Else
MsgBox ("Datei " & Chr$(34) & "E:\B.xlm" & Chr$(34) & " nicht vorhanden!")
nofile = False
End If
End If
If ThisWorkbook.Sheets(1).ComboBox1 = "YES" Then
Dat = FreeFile
On Error GoTo Fehler
Open "E:\C.xml" For Input As #Dat
On Error GoTo 0
If nofile = False Then
Do
Line Input #Dat, str
Loop Until InStr(1, str, "</und>", vbTextCompare) > 0
str = Left(str, InStr(1, str, "</und>", vbTextCompare) - 1)
str = Right(str, Len(str) - InStr(1, str, ">", vbTextCompare))
If IsNumeric(str) = False Then ThisWorkbook.Sheets(1).Range("D58") = str
Close #Dat
Else
MsgBox ("Datei " & Chr$(34) & "E:\A.xlm" & Chr$(34) & " nicht vorhanden!")
nofile = False
End If
End If
Fehler:
nofile = True
Resume Next
End Sub

Gruß Ingolf
Anzeige

333 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige