none
Aus der MSDN-Hotline: (VBA) Mit Split und UBound ein Element aus einem String extrahieren

    Allgemeine Diskussion

  • Hallo zusammen,
    heute wurde uns bei der MSDN Hotline unter anderem folgende Frage gestellt:

    Wie erhalte ich das letzte Element eines Pfades?

    Unsere Antwort bzw. unser Lösungsvorschlag darauf war:

    Prinzipiell gibt es da mehrere Möglichkeiten. Wir empfehlen folgenden Algorithmus:
    1. Teile den String des XPath an jedem Schrägstrich „/“
    2. Wähle das letzte Element des zerteilten Strings

    Sub test()
        Dim sXPathArray
        Dim sXPath As String
        Dim lastNode As String
        
        ' Declare a test string
        sXPath = "/html/body/div[2]/div/div[4]/div/p/strong"
        ' Split the xpath statement
        sXPathArray = Split(sXPath, "/")
        ' Extract last node from path
        lastNode = sXPathArray(UBound(sXPathArray))
        ' lastNode = "strong"
    End Sub
    
    Wir verwendeten folgende VBA-Methoden:
    Split(text, delim): Teilt den String "text" am Trennzeichen "delim" und gibt ein Array mit den Teilen zurück
    UBound(array): Gibt den letzten Index von "array" zurück.

     

    Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

    Viele Grüße,
    Jonathan Best
    MSDN Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline: http://www.msdn-online.de/Hotline
    MSDN Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die MSDN Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu Markenzeichen Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN Hotline.

    • Bearbeitet Jonny Best Mittwoch, 5. Oktober 2011 14:03
    Mittwoch, 5. Oktober 2011 14:03

Alle Antworten

  • Code-Test:

    Weiter im o.g. VBA-Code erhalte ich mit der Methode getElementByTagName(lastNode), aus dem lastNode nur dann den innerText, wenn der letzte Tag keinen zusätzlichen Index in eckigen Klammern [ ] hat.

    Beispiele:
    1. Wenn also der Tag z.B. einfach strong oder p lautet, dann funktioniert die Methode ByTagName.
    2. Wenn der Tag aber einen Index hat z.B. p[2] wird kein Ergebnis zurückgegeben aber auch keine Fehlermeldung.

    Mit welcher Methode lässt sich das in VBA direkt umsetzen ?

    Sonntag, 9. Oktober 2011 14:23
  • Hey VBAFreak,

    unser Beispiel bezieht sich auf Visual Basic for Applications in Office-Anwendungen. Du scheinst in deinem Beispiel VBScript im Internet Explorer zu verwenden, deshalb kann es natürlich sein, dass unser Beispiel nicht passt.

    Damit wir eine korrekte Antwort geben können, müssen wir mehr über das Problem und den Kontext wissen. Bitte melde dich ab 12 Uhr bei der MSDN Hotline.

    Grüße,
    Jonny

    Montag, 10. Oktober 2011 04:06