Strings aus Stringvariable extrahieren

Bild

Betrifft: Strings aus Stringvariable extrahieren
von: mpb
Geschrieben am: 15.11.2015 11:04:25

Hallo,
ich hole mir per VBA von einer Website das Ergebnis einer Suchabfrage ab und speichere das Ergebnis in einer als String deklarierten Variable MYtxt (ca. 80000 Zeichen). Die Ergebnislisten enthalten 100 oder weniger Treffer, die jeweils wieder verlinkt sind. In meiner Variablen ist dann 100mal folgender Text vorhanden:
<A HREF=""javascript:NeuFenster('/cgi-bin/bl_aufruf.pl?PHPSESSID=xxxxxxxx</A>
xxxxxxxx steht für eine beliebige Zahl unterschiedlicher Zeichen, die sich von Treffer zu Treffer unterscheiden.
Ich möchte nun die hundert Strings aus dem gesamten String extrahieren und in Zellen speichern. Wie kann ich das bewerkstelligen?
Vielen Dank!
Gruß
Martin

Bild

Betrifft: AW: Strings aus Stringvariable extrahieren
von: Sepp
Geschrieben am: 15.11.2015 11:42:29
Hallo Martin,
das kann z. B. dies Routine erledigen.

Sub extractText(strText As String, Target As Range)
Dim lngP1 As Long, lngP2 As Long, lngI As Long
Dim strF1 As String, strF2 As String
Dim rng As Range

strF1 = "<A HREF=""javascript:NeuFenster('/cgi-bin/bl_aufruf.pl?PHPSESSID"
strF2 = "</A>"

Set rng = Target.Cells(1, 1)

Do
  lngP1 = InStr(lngP2 + 1, strText, strF1)
  If lngP1 > 0 Then
    lngP2 = InStr(lngP1 + Len(strF1), strText, strF2)
    If lngP2 > 0 Then
      rng.Offset(lngI, 0) = Mid(strText, lngP1, lngP2 + Len(strF2) - lngP1)
      lngI = lngI + 1
    End If
  End If
Loop While lngP1 > 0 And lngP2 > 0


Set rng = Nothing
End Sub

Den Code rufst du so auf.
Call extractText(MYtxt, Sheets("Tabelle2").Range("A1"))

Deine Variable und den Ausgabeort musst du natürlich anpassen.
Gruß Sepp


Bild

Betrifft: AW: Strings aus Stringvariable extrahieren
von: Beverly
Geschrieben am: 15.11.2015 11:43:19
Hi Martin,
mir ist nicht ganz klar, ob du nur die Zahlen oder den gesamten String extrahieren willst - ich bin mal von letzterem ausgegangen:

Sub Trennen()
    Dim MYtxt As String
    Dim arrDaten
    Dim lngZaehler As Long
    MYtxt = Range("A1")  ' String wird aus A1 genommen
    arrDaten = Split(MYtxt, "/A>")
    For lngZaehler = LBound(arrDaten) To UBound(arrDaten)
        arrDaten(lngZaehler) = arrDaten(lngZaehler) & "/A>"
    Next lngZaehler
    Range("B1").Resize(UBound(arrDaten), 1) = Application.Transpose(arrDaten)
End Sub



Bild

Betrifft: AW: Strings aus Stringvariable extrahieren
von: Matthias
Geschrieben am: 15.11.2015 11:48:59
Hallo Martin,
bei mir nimmt er die MYtxt aus Zelle A1, wenn du es schon als Variable hast, kannst du den Teil evtl. rausstreichen.

Sub Ergebnisse()
Dim sMyTxt As String, vString, x As Long
With Sheets("Tabelle1")
    sMyTxt = CStr(.Range("A1")) 'Variable aus Zelle A1 entnehmen
    .Columns("A").Clear 'Aufräumen
    
    .Range("A1") = sMyTxt
    .Cells(3, 1) = "Extrahierte Ergebnisse:"
    
    'in einzelne Strings splitten
       'Anmerkung aus jedem Anführungszeichen im Trenn-String werden zwei Stück!
       'aus "<A HREF=""javascript..." wird also "<A HREF=""""javascript..."
    vString = Split(sMyTxt, _
              "<A HREF=""""javascript:NeuFenster('/cgi-bin/bl_aufruf.pl?PHPSESSID=")
    
    For x = 1 To UBound(vString) ' Nullter String ist nicht relevant
        'für jeden String Ende wegschneiden
        .Cells(x + 4, 1) = Left(vString(x), InStr(1, vString(x), "</A>") - 1)
    Next x
End With
End Sub
lg Matthias

Bild

Betrifft: AW: Strings aus Stringvariable extrahieren
von: mpb
Geschrieben am: 16.11.2015 12:38:29
Hallo,
vielen Dank für die drei Vorschläge. Ich habe mich jetzt für den von Sepp entschieden, weil ich damit (strukturell) auch noch ein Folgeproblem lösen kann. Falls ich noch weiteren Bedarf habe, würde ich mich nochmal melden.
Gruß
Martin

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Strings aus Stringvariable extrahieren"