Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten aus einer shtml Datei extrahieren

Daten aus einer shtml Datei extrahieren
23.11.2006 13:20:30
Christian
Guten Tag an alle:
Habe mich bereits ein paar Stunden im Forum "rumgetrieben".
Leider bisher ohne Erfolg - Ansätze habe ich gefunden - aber leider Mangels weiterer Kenntnisse keine passable Lösung für mein Problem:
Aus einer shtml-Datei, die immer nach dem selben Schema aufgebaut ist müssen bestimmte Elemente extrahiert werden.
Nach dem eigentlichen html-Body beginnt der für mich intersante Teil immer mit
aP[1]
Dieser Teil umfasst dann jeweils hinter der Zeile mehrere Daten - dazu später!
Der interessante Teil endet immer mit aP[16] - auch hier folgen aber noch Daten die ich benötige.
Die erste Zeichenfolge die ich nicht mehr benötige ist dann immer TH='http://skins. (diese Zeichenfolge kommt nur einmal vor, ebenso wie das anfangs beschriebene aP[1].
Als erstes müsste also der Teil vor aP[1] sowie ab TH='http://skins. eliminiert werden.
Das, so denke ich sollte für einen Excel-Kenner noch "einfach" lösbar sein ;-)
Aus dieser nun in einer Zeile befindlichen Textsuppe müssen nun 16 Zeilen, jeweils beginnend mit aP[1] - aP[16] in einzelne Zeilen kopiert werden (Denk ich zumindestens)
Im nächsten Schritt geht es dann weiter:
Die dann übrig gebliebenen Zeilen können wie folgt aussehen:
aP[16]=newArray(76,16,'D.b.D.',7700,4190,5245,7700,0,'Cvenus88',80,15844,16113,'','Cvenus88','ZEISS',0);
Wichtig für mich sind in diesem Beispiel die folgenden Teile:
Cvenus88
D.b.D.
die im Idealfall in jeweils eine Spalte geschrieben werden.
Ein weiteres Beispiel für eine Zeile wäre das folgende:
aP[1] = new Array(0,0,'',0,102,'',101,0,'',0,'',1,0,0,'',0)
Hierbei sollten einfach nur 2 leere Felder ausgegeben werden.
Zusammengefasst sieht es also so aus das innerhalb der einzelnen Ausdrücke jeweils 5 mal ' ' stehen von denen jeweils die Daten in den ersten und zweiten ' ' wichtig sind.
Für Eure Tipps und Hilfe bin ich Euch schon im Vorfeld sehr dankbar.
Und bitte bei Lösungsvorschlägen beachten: Ich bin Excel-Laie ;-)
Vielen Dank also .... Christian

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus einer shtml Datei extrahieren
23.11.2006 18:04:11
IngGi
Hallo Christian,
das ist eine ziemlich komplexe Geschichte und ohne Vorlage nicht so einfach zu lösen. Ich habe dir eine Excel-Datei mit einem Makro hochgeladen. Starte das Makro SHTML_Daten_einlesen über Extras-Makro-Makros. Nach dem Start musst du über das Auswahlfenster deine SHTML-Datei auswählen. Nun wird eine neue Arbeitsmappe erzeugt und eine Tabelle mit den relevanten Daten wird dort hinein geschrieben. Das Makro ist ungetestet, da ich keine Vorlage hatte. Wahrscheinlich sind daher noch Fehler drin. Falls dem so ist, solltest du mir eine Beispiel-SHTML-Datei hochladen, damit ich testen kann.
https://www.herber.de/bbs/user/38443.xls
Gruß Ingolf
Anzeige
AW: Daten aus einer shtml Datei extrahieren
24.11.2006 09:48:17
Christian
Hallo Ingolf,
bin ja völlig platt - danke für deine schnelle und umfangreiche Hilfe - hatte eigentlich mit kleinen Tipps und nicht mit einem -fast- fertigen Makro gerechnet.
Hab versucht zu verstehen was du da geschrieben hast und habe es auch geschafft dem ganzen durch kopieren und editieren von 2 Zeilen eine weitere Spalte zu entlocken.
Leider sind tatsächlich noch Bugs drin - habe daher mal eine Beispiel Datei hochgeladen.
Das Makro habe ich mit verschiedenen Dateien getestet, es kommen unterschiedliche Ergenisse zu Tage.
Wahrscheinlich muss auf Grund der Tatsache das die Felder immer unterschiedlich sind zunächste der Umweg über extrahieren aller Daten mit anschließender Löschung der nicht benötigten Daten gegangen werden.
Da es sich bei dem Ganzen um eine Art "Landkarte" für ein Online-Spiel handelt hätte ich Verständniss wenn Du deine Zeit nicht weiter investierst.
Das Makro hat mich hingegen so gefesselt das ich nichtmal ans spielen gedacht habe, nur habe ich leider nur Bruchteile verstanden.
Für deine Mühe bisher schon mal vielen Dank
Christian
https://www.herber.de/bbs/user/38457.htm (Ist eine orig. html)
Anzeige
AW: Daten aus einer shtml Datei extrahieren
24.11.2006 12:05:48
Christian
Hallo Ingolf,
habe mich soeben nochmal mit dem Makro beschäftigt.
Verstehe nun auch schon etwas mehr davon ;-)
Der Fehler liegt wohl daran das nach dem einlesen des ersten Datensatzes nicht der komplette Text bis zum nächsten Hochkomma abgeschnitten wird sondern nur der eingelesene Text - eventuell sogar ohne das Hochkomma am Ende.
Dadurch wird das beendende Hochkomma des ersten Datensatzes zum beginnenden des zweiten und es werden dadurch Daten geschrieben die eigentlich wegfallen sollten.
Habe mir nochmal verschiedene Quell-Dateien angesehen: Es sind immer 5 Zeichenfolgen die jeweils zwischen den Hochkommata stehen.
Es dürfen ruhig alle Daten zwischen den Hochkommata in Spalten ausgegeben werden, aber das hab ich ja schon geschafft.
Vielleicht hilft diese Anregung dir etwas.
Vielen Dank nochmal
Christian
Anzeige
AW: Daten aus einer shtml Datei extrahieren
27.11.2006 12:36:27
IngGi
Hallo Christian,
ich bin erst heute dazu gekommen, mir die Sache noch einmal anzusehen. Kannst du mir deine Beispieldatei nochmal als .txt-Datei hochladen. Du musst einfach nur die Dateiendung ändern. Die .htm-Datei wird beim runterladen immer in die Herber-Seiten eingebunden. Dadurch geht der Inhalt deiner Datei verloren.
Gruß Ingolf
AW: Daten aus einer shtml Datei extrahieren
27.11.2006 15:34:06
IngGi
Hallo Christian,

Sub SHTML_Daten_einlesen()
'Variablendeklarationen
'***************************************************************************************
Dim FF As Byte
Dim strDaten As String
Dim strSatz As String
Dim b As Byte
Dim strDatNam As String
'***************************************************************************************
'Dateiname mit Pfad abfragen
'---------------------------------------------------------------------------------------
strDatNam = Application.GetOpenFilename
'---------------------------------------------------------------------------------------
'Text aus Datei in Variable strDaten importieren
'---------------------------------------------------------------------------------------
'Wenn Datei ausgewählt
If strDatNam <> "" Then
   FF = FreeFile
   Open strDatNam For Input As #FF
   strDaten = Input(LOF(FF), #FF)
   Close #FF
Else 'wenn keine Datei ausgewählt, Makro beenden
   Exit Sub
End If
'---------------------------------------------------------------------------------------
'Nicht benötigten Text vorne und hinten abschneiden
'---------------------------------------------------------------------------------------
strDaten = Right(strDaten, Len(strDaten) - InStr(1, strDaten, "aP[1]") + 1)
strDaten = Left(strDaten, InStr(1, strDaten, "TH=XXXXX") - 1)
'---------------------------------------------------------------------------------------
'Neue Arbeitsmappe erzeugen und Vorspalte füllen
'---------------------------------------------------------------------------------------
Workbooks.Add
For b = 1 To 16
   Range("A65536").End(xlUp).Offset(1, 0) = "aP[" & b & "]"
Next 'b
'---------------------------------------------------------------------------------------
'Datensätze 1 bis 16 aus strDaten in strSatz einlesen
'Daraus wiederum die relevanten Daten zwischen Hochkommata extrahieren
'und in Tabelle eintragen
'---------------------------------------------------------------------------------------
For b = 1 To 16
   'Wenn nicht letzter Datensatz ...
   If InStr(1, strDaten, "aP[" & b + 1 & "]") > 0 Then
      '... Datensatz bis Anfang nächster Datensatz nach strSatz schreiben
      strSatz = Mid(strDaten, InStr(1, strDaten, "aP[" & b & "]"), _
         InStr(1, strDaten, "aP[" & b + 1 & "]") - InStr(1, strDaten, "aP[" & b & "]"))
   Else 'sonst wenn letzter Datensatz ...
      '... Datensatz bis Ende Daten nach strSatz schreiben
      strSatz = Right(strDaten, Len(strDaten) - InStr(1, strDaten, "aP[16]"))
   End If
   'Wenn relevante Daten vorhanden
   If InStr(1, strSatz, "'") > 0 Then
      'Erstes relevantes Datum in erste Datenspalte der Tabelle schreiben
      Cells(b + 1, 2) = Mid(strSatz, InStr(1, strSatz, "'") + 1, _
         InStr(InStr(1, strSatz, "'") + 1, strSatz, "'") - InStr(1, strSatz, "'") - 1)
      'strSatz auf Daten nach erstem relevantem Datum kürzen
      strSatz = Right(strSatz, Len(strSatz) - _
         InStr(InStr(1, strSatz, "'") + 1, strSatz, "'"))
      'zweites relevantes Datum in zweite Datenspalte der Tabelle schreiben
      Cells(b + 1, 3) = Mid(strSatz, InStr(1, strSatz, "'") + 1, _
         InStr(InStr(1, strSatz, "'") + 1, strSatz, "'") - InStr(1, strSatz, "'") - 1)
   End If
Next 'b
'---------------------------------------------------------------------------------------
End Sub

Gruß Ingolf
Anzeige
AW: Daten aus einer shtml Datei extrahieren
29.11.2006 12:34:42
Christian
Hallo Ingolf,
vielen Dank nochmal für den Quellcode.
Habe das nur kurz ausprobieren können da ich zur Zeit bis über beide Ohren im Arbeitsstress bin.
Klappt soweit aber.
Werde mich Anfang nächster Woche nochmal genauer damit beschäftigen und dann nochmal Bescheid geben.
Wie gesagt - bis hierher erstmal vielen Dank
Christian

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige