Quelltext nach Telefonnummer durchsuchen, letzten 5 Nummern unbekannt

  • Sonstige

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Kaypetri.

    Quelltext nach Telefonnummer durchsuchen, letzten 5 Nummern unbekannt

    Hallo ihr Spezialisten,

    habe mal wieder ein Problemchen dass ich nicht so recht lösen kann.

    Ich suche via VBA in einem Mitarbeiterverzeichnis(Intranet) nach einem Mitarbeiter via Namen. Ich möchte nun realisieren, dass ich via vba den Quelltext nach der passenden Telefonnummer durchsuchen kann. Die letzten 5 Stellen sind jedoch unbekannt. Der erste Teil ist immer gleich.

    hier mal der Ausschnitt des Quelltext:

    <tr bgcolor="white"><input type="hidden" name="telephoneNumber" value="+49-89-382-20866"> <td class="normal">Kurzwahl
    </td><td></td><td class="normal">20866</td></tr>
    <tr bgcolor="white"> <td class="normal">Telefon</td><td> </td><td class="normal">+49-89-382-20866</td> <input type="hidden" name="" value="+49-89-382-20866"></tr>

    Ich dachte mir man durchsucht den Quelltext bis zur Stelle: "+49-89-382-" und lässt sich dann die restlichen 5 Zahlen ausgeben. Ich bekomme das jedoch rein garnicht gebacken.

    Hat jemand evtl. eine Lösung dafür?

    Gruß Kay
    Wie du an den Quelltext dran kommst ist dir klar? -> Geht nicht direkt hervor.

    Also wenn du den Quelltext schon als HTMLDocument hast: (GetInnerHtmlBody & RequestString sind eigene Funktionen)

    Visual Basic-Quellcode

    1. Public Sub DoSomethingWithHTML()
    2. Dim ResponseDocument As New HTMLDocument
    3. Set ResponseDocument = GetInnerHtmlBody(RequestString("URL"))
    4. MsgBox ResponseDocument.getElementById("productDescription").getElementsByTagName("li")(0).innerText
    5. End Sub

    Den getElementById Part musst du halt noch anpassen:

    Quellcode

    1. document.getElementsByName("telephoneNumber")[0]
    2. <input type="hidden" name="telephoneNumber" value="+49-89-382-20866">
    3. document.getElementsByName("telephoneNumber")[0].value
    4. "+49-89-382-20866"

    Du kannst mit ​getElementsByTagName ein Array, mit in dem Fall Telefonnummer bekommen, welches du dann durchsuchen könntest. Siehe InStr() function oder ähnliches.

    Gruß, FireEmerald
    Es ist am Ende eine Catia Anwendung. VBA ist aber Excel basierend, mit den Erweiterungen von Dessault natürlich.

    Ich hole mir den Quellcode im Moment so:

    Dim WebBrowser1 As Object
    Dim i As Integer

    Set WebBrowser1 = CreateObject("InternetExplorer.Application")
    WebBrowser1.Visible = True ' zum testen anzeigen
    WebBrowser1.Navigate "http://mvz.muc/groupdir/MVZ-API.jsp?useFrames=y&surname=petri&givenName=kay&departmentNumber=&telephoneNumber=&PrimaryKey=&Lang=German"
    While WebBrowser1.ReadyState <> 4
    'Warten, bis Seite geladen ist
    DoEvents
    Wend
    MsgBox WebBrowser1.Document.body.innerhtml


    Jedoch gibt mir die Msgbox nur folgenden Quelltext wieder:

    <FRAMESET frameSpacing=0 border=0 frameBorder=0 rows=130,*><FRAME src="home.htm" name=Home scrolling=no><FRAMESET frameSpacing=0 border=0 cols=10,* frameBorder=0><FRAME noResize marginHeight=0 src="gray.htm" frameBorder=0 name=DSL marginWidth=0 scrolling=no><FRAME noResize marginHeight=0 src="Navigate.htm?Lang=German" frameBorder=0 name=Navigate marginWidth=0 scrolling=no></FRAMESET></FRAMESET><FRAMESET frameSpacing=0 border=0 frameBorder=0 rows=130,*,40><FRAME noResize src="mvz_header.htm" frameBorder=0 name=Header scrolling=no><FRAME src="/servlet/DirXServlet/groupdir/MVZ-List.htm?dxwSession=false&amp;Lang=German&amp;surname=petri&amp;givenName=kay&amp;initial=true" name=Main><FRAME src="mvz_footer.htm" name=Footer scrolling=no></FRAMESET>

    Das ist garnicht der komplette Quellcode.
    Ja. Geht. Jetzt bekomme ich den korrekten Code:
    Jetzt muss ich nur nur die Nummer aus dem Text filtern der jetzt so wiedergegeben wird.

    HTML-Quellcode

    1. <TR bgColor=white><INPUT value=+49-89-382-20866 type=hidden name=telephoneNumber>
    2. <TD class=normal>Kurzwahl </TD>
    3. <TD></TD>
    4. <TD class=normal>20866</TD></TR>
    5. <TR bgColor=white>
    6. <TD class=normal>Telefon</TD>
    7. <TD></TD>
    8. <TD class=normal>+49-89-382-20866</TD><INPUT value=+49-89-382-20866 type=hidden name=""></TR>

    Visual Basic-Quellcode

    1. Text = "<TR bgColor=white><INPUT value=+49-89-382-20866 type=hidden name=telephoneNumber>"
    2. Vorwahl = "+49-89-382-"
    3. x1 = InStr(1, Text,Vorwahl) + Len(Vorwahl)
    4. x2 = InStr(x1, Text, " ")
    5. Durchwahl = Mid(Text, x1, x2 - x1)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Super. Danke an dieser Stelle. Es hat funktioniert.

    Quellcode

    1. Sub mvz()
    2. Dim WebBrowser1 As Object
    3. Dim i As Integer
    4. Set WebBrowser1 = CreateObject("InternetExplorer.Application")
    5. WebBrowser1.Visible = True ' zum testen anzeigen
    6. WebBrowser1.Navigate "url"
    7. While WebBrowser1.ReadyState <> 4
    8. 'Warten, bis Seite geladen ist
    9. DoEvents
    10. Wend
    11. text = WebBrowser1.Document.body.innerhtml ' Quelltext auslesen
    12. Vorwahl = "+49-89-382-" 'Vorwahl festlegen
    13. x1 = InStr(1, text, Vorwahl) + Len(Vorwahl)
    14. x2 = InStr(x1, text, " ")
    15. durchwahl = Mid(text, x1, x2 - x1)
    16. MsgBox durchwahl
    17. End Sub