Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
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
Inhaltsverzeichnis

OuterHTML-Texte aus mehreren HTM-Dateien

OuterHTML-Texte aus mehreren HTM-Dateien
08.04.2020 09:10:08
domisalfa
Hallo,
ich habe folgenden Code, um HTM-Dateien aus einem Ordner in eine Excel-Tabelle zu importieren:

Sub ImportHtmFiles()
Const FOLDER = "C:\text"
Set FSO = CreateObject("Scripting.FileSystemObject")
With ActiveSheet
For Each file In FSO.GetFolder(FOLDER).Files
If LCase(FSO.getextensionname(file.Name)) = "htm" Then
.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Value = FSO.OpenTextFile(file.Path, 1).   _
_
_
ReadAll()
End If
Next
End With
End Sub

Ich möchte allerdings nicht den kompletten HTML-Code einlesen, sondern nur die InnerHTML-Texte.
Kann mir da jemand weiterhelfen und meinen Code anpassen?
Vielen Dank!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OuterHTML-Texte aus mehreren HTM-Dateien
08.04.2020 11:07:33
domisalfa
Hat niemand eine Idee? :-(
AW: OuterHTML-Texte aus mehreren HTM-Dateien
08.04.2020 11:20:04
volti
Hallo domisalfa,
mein erster Gedanke war, das über den Internet-Explorer zu machen. Leider ist es mir nicht gelungen, die HTM-Seiten von der Festplatte in das DOM-Objekt zu bekommen.
Wenn es Dir nur darum geht, die HTML-Texte um die Tags zu bereinigen, um den reinen Text zu extrahieren, findest Du nachfolgend einen ersten Versuch, dieses zu Fuß zu machen...
Das ist mit heißer Nadel gestrickt und sicher noch erweiterbar...
Probier es einfach mal aus:

Option Explicit
Sub ImportHtmFiles()
'Liest HTML-Daten aus Text-Dateien und entfernt die Tags
 Dim FSO As Object, oFile As Object
 Dim sData As String, sArr() As String, i As Long
 Const oFolder = "C:/Users/voltm/Desktop" '"C:\text"
 Set FSO = CreateObject("Scripting.FileSystemObject")
 With ActiveSheet
   For Each oFile In FSO.GetFolder(oFolder).Files
     If FSO.getextensionname(oFile.Name) Like "htm*" Then
       sData = Split(FSO.OpenTextFile(oFile.Path, 1).ReadAll(), "<body")(1)
       sData = Replace(sData, vbCrLf, "")
       sData = Replace(Replace(sData, "</br>", vbCrLf), "<br>", vbCrLf)
       sData = Replace(Replace(sData, "</tr>", vbCrLf), "</th>", vbCrLf)
       sData = Replace(sData, "</td><td", vbTab & "<")
       sData = Replace(sData, "</th><th", vbTab & "<")
       sArr = Split(sData, "<")
       For i = 0 To UBound(sArr)
        If InStr(sArr(i), ">") = Len(sArr(i)) Then
          sArr(i) = ""
        ElseIf InStr(sArr(i), ">") = 0 Then
        Else
          sArr(i) = Split(sArr(i), ">")(1)
        End If
       Next i
       sData = Join$(sArr)
'HTML-Daten bereinigen
       sData = Replace(sData, """, Chr$(34))
       sArr = Split(" , ,>,&GT;,<,&LT;,ß,ß,ä,ä,ö,ö,ü,ü,", ",")
       For i = 0 To UBound(sArr) - 1 Step 2
           sData = Replace(sData, sArr(i), sArr(i + 1))
       Next i
'### Hier in sData sind die bereinigten Daten, mach was damit###
     End If
   Next oFile
 End With
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: OuterHTML-Texte aus mehreren HTM-Dateien
08.04.2020 11:52:59
volti
Hi,
sehe grad, dass die Forumssoftware einiges verhunzt hat.
Hier noch mal als Textdatei....
Anlage: HTML-Extracting.txt
viele Grüße
Karl-Heinz
AW: OuterHTML-Texte aus mehreren HTM-Dateien
08.04.2020 14:51:26
volti
Hier noch mal ein Update.
Es fehlte noch das <p>-Tag und einige Umlaute wurden ergänzt.
Das in der Datei enthaltene Makro ersetzt die wichtigsten Tags entsprechend, so dass eben nicht alles aneinander geklatscht wird. So wird z.B. auch eine Tabelle sinnvoll dargestellt.
https://www.herber.de/bbs/user/136537.txt
Aber ggf. mal eine Musterdatei hier hochladen, falls es nicht passen sollte.
viele Grüße
Karl-Heinz
Anzeige
AW: OuterHTML-Texte aus mehreren HTM-Dateien
08.04.2020 13:42:22
Zwenn
Hallo domisalfa,
Deine Frage kann man so pauschal nur mit "ja, das geht" beantworten. Deshalb ein paar Rückfragen:
  • Sind die HTML-Dateien alle gleich aufgebaut? Also, sind es z.B. alles Seiten aus dem gleichen Forum oder Angebotsseiten aus dem gleichen OnlineShop?

  • Du wirst keinen Spaß haben, wenn Du einfach den Text der gesamten Seite als einen String extrahierst. Dabei entsteht in der Regel nämlich ein nicht wirklich lesbarer Wust mit einer Menge Fehlern, weil z.B. Textblöcke aus nachfolgenden Tags direkt an den Textblock des vorherigen Tags geklatscht werden. Also ohne Leerzeichen dazwischen. Welche Informationen aus Deinen HTML-Dateien brauchst Du also im Detail?

  • Aus der letzten Frage ergibt sich zwangsläufig, dass Du mindestens eine der HTML-Dateien zur Verfügung stellen musst.

  • Bitte erläutere also mal genauer, was Du vor hast.
    Viele Grüße,
    Zwenn
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige