Hallo zusammen, ich hoffe ihr könnt mir helfen, ich komme nicht weiter, auch nicht bard oder ChatGPT.
In meiner Excel habe ich in Spalte C eine Liste mit lokalen Dateienpfaden zu .html Dateien. Diese html Dateien enthalten mehrere Einträge wie
<meta itemProp="sku" content="12345abc"/>
Die sku / Artikelnummer im content ist logischerweise dynamisch. Ich möchte nun in Spalte D eine Liste mit allen gefunden sku's haben, getrennt durch ein komma. Mein Code funktioniert auch schon recht gut, allerdings werden nur die ersten 8 gefunden, dann kommt Fehler 6, Überlauf.
Kann mir bitte jemand helfen?
Sub DurchsucheMehrereHTMLDateienNachSKU()
Dim ws As Worksheet
Dim objFSO As Object
Dim objFile As Object
Dim htmlContent As String
Dim startIdx As Integer
Dim endIdx As Integer
Dim sku As String
Dim i As Integer
Dim j As Integer
Dim skuCount As Integer
' Arbeitsblatt "Sheet1" referenzieren
Set ws = ThisWorkbook.Sheets("Sheet1")
' Objekt für Dateisystemzugriff erstellen
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Durchsuche die Dateien von Zeile 2 bis Zeile 5 in Spalte C
For j = 2 To 5
' Pfad aus aktueller Zeile, Spalte C lesen
Dim filePath As String
filePath = ws.Cells(j, 3).Value
' Überprüfen, ob es sich um eine .html Datei handelt
If objFSO.FileExists(filePath) And LCase(Right(filePath, 5)) = ".html" Then
' HTML-Datei öffnen und nach SKU durchsuchen
Set objFile = objFSO.OpenTextFile(filePath)
htmlContent = objFile.ReadAll
objFile.Close
' SKU in der HTML-Datei finden und in aufeinanderfolgende Spalten eintragen
startIdx = InStr(htmlContent, "<meta itemProp=""sku"" content=""")
i = 4 ' Beginne in Spalte D
skuCount = 0 ' Anzahl gefundener SKUs zurücksetzen
Do While startIdx > 0
startIdx = startIdx + Len("<meta itemProp=""sku"" content=""")
endIdx = InStr(startIdx, htmlContent, """")
sku = Mid(htmlContent, startIdx, endIdx - startIdx)
' SKU in nächster freier Spalte eintragen
ws.Cells(j, i).Value = sku
i = i + 1
skuCount = skuCount + 1
' Prüfen, ob das Ende der Datei erreicht wurde
If startIdx >= Len(htmlContent) Then Exit Do
' Weitere SKU suchen
startIdx = InStr(startIdx, htmlContent, "<meta itemProp=""sku"" content=""")
Loop
MsgBox "Es wurden " & skuCount & " SKUs in der Datei " & filePath & " gefunden und in aufeinanderfolgende Spalten eingetragen."
Else
MsgBox "Der angegebene Pfad in Zeile " & j & ", Spalte C ist ungültig oder es handelt sich nicht um eine .html Datei."
End If
Next j
' Aufräumen
Set ws = Nothing
Set objFSO = Nothing
Set objFile = Nothing
End Sub
|