Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Text auf Webseite finden | Herbers Excel-Forum


Betrifft: Text auf Webseite finden von: Beverly
Geschrieben am: 16.12.2009 10:53:45

Hi Helfer,

Ausgangssituation: Arbeitsmappe, die sowohl in Excel vor 2007 als auch in Excel ab 2007 genutzt wird

Problem: um einen bestimmten Text auf einer Webseite zu finden, lese ich eine Webseite durch Erstellen einer Webabfrage im Tabellenblatt aus und suche dort den Text. Das Problem dabei ist, das beim Öffnen dieser Arbeitsmappe in Excel2007 nachgefragt wird, ob man dieser Quelle vertraut (zusätzlich zur Abfrage bezüglich der Makros) - und das möchte ich umgehen. In Excel2007 kann man zwar (z.B. beim Schließen der Arbeitsmappe) per VBA die Verbindung löschen - .Connections("...").Delete - das funktioniert jedoch nicht z.B. in Excel2002 (den Befehl gibt es dort nicht).

Meine Frage: gibt es noch eine andere Möglichkeit außer einer Webabfrage, einen Text auf einer Webseite zu finden, und wenn ja - wie?


GrußformelBeverly's Excel - Inn

  

Betrifft: AW: Text auf Webseite finden von: Luschi
Geschrieben am: 16.12.2009 11:13:41

Hallo Karin,

für solche Fälle gibt es die #If...Then...#Else-Anweisung
Ein Beispiel dazu:

Dim i As Integer
i = Val(Application.Version)
#If i > 11 Then
      'Befehle, die es erst ab Excel 2007 gibt
#End If
Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Text auf Webseite finden von: Beverly
Geschrieben am: 16.12.2009 11:42:35

Hi Luschi,

ja, das ist mir schon klar, aber es löst das eigentliche Problem nicht. Wenn man die Arbeitsmappe in den Versionen vor 2007 verwendet hat, wurden die Verbindungen erstellt und sind auch noch vorhanden, selbst wenn man das Tabellenblatt in welchem sie erstellt wurden löscht und man dadurch auch keinen Zugriff mehr auf Verbindung hat (sie sind unter Daten nicht mehr aktualisierbar). Sobald ich aber nun die Arbeitsmappe anschließend in 2007 öffne, erscheint wieder diese Nachricht ob man der Quelle vertraut und die Verbindungen werden auch unter Daten -> Verbindungen aufgelistet. Beim Öffnen der Arbeitsmappe in 2007 die Verbindungen per VBA löschen geht nicht, da die Prüfung durch Excel vor dem Ausführen des Workbook_Open Ereignisses erfolgt. Deshalb mein Gedanke, gar nicht erst eine Webabfrage im Tabellenblatt zu erstellen, sondern den Text auf irgend eine andere Art und Weise auf der Webseite zu suchen - ich weiß aber eben nicht wie.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Text auf Webseite finden von: Beverly
Geschrieben am: 16.12.2009 11:43:15

Frage noch offen.


  

Betrifft: AW: Text auf Webseite finden von: Peter
Geschrieben am: 16.12.2009 13:25:11

Hallo


Ich hab deine Frage nur überflogen.... ich hoffe mein tip hilft dir weiter

Möglicherweise läßt sich die Abfrage so unterdrücken.

Application.DisplayAlerts = false

Es könnte aber auch eine sicherheitsrelevante
Abfrage sein, die auf Grund der Sicherheitseinstellung im Excel erscheint (So wie die Meldung, das die Excel Datei Markos enthält und ob man die deaktivieren will). Die müsste man, wenn man will runtersetzten.


lg. Peter


  

Betrifft: AW: Text auf Webseite finden von: M. Rudolf
Geschrieben am: 16.12.2009 13:48:16

Hallo Karin,

vielleicht hilft dir dieser Codeschnipsel weiter. Ich hab ihn auch mal aus dem Forum und nutze ihn um Enfernungen per Google Maps zu ermitteln. Hier wird das Body Element der Website eingelesen und nach dem Text durchsucht. Ich glaube das ist der Ansatz den du suchst um auf eine Webabfrage verzichten zu können

Function Entfernung(ByVal von As String, ByVal bis As String) As String
    Dim arText As Variant
    Dim IEApp As Object
    Dim i As Long
    Dim start As String
    Dim ziel As String
    
    Set IEApp = CreateObject("InternetExplorer.Application")
    IEApp.Visible = True
    
IEApp.Navigate "http://maps.google.com/maps?saddr=" & von & "&daddr=" & bis & "&hl=de&output= _
html"
    'Application.Wait (Now + TimeValue("0:00:5"))
    Do: Loop Until IEApp.Busy = False
    
    While True
        arText = Split(IEApp.Document.Body.innerText, vbCrLf)
        For i = 0 To UBound(arText)
            If InStr(1, arText(i), "km – ca.", vbTextCompare) > 0 Then
                Entfernung = arText(i)
                Exit Function
            End If
        Next
        MsgBox "Bitte Route im IE manuell korrigieren"
    Wend
End Function
Hoffe es hilft,
Gruß Rudi


  

Betrifft: AW: Text auf Webseite finden von: Beverly
Geschrieben am: 16.12.2009 15:06:50

Hi Rudi,

danke erst einmal für den Code - du hast Recht, vom Prinzip her ist es genau das was ich suche. Ich werde den Code unter meinen Bedingungen testen und gebe dann Rückmeldung.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Text auf Webseite finden von: Beverly
Geschrieben am: 16.12.2009 16:54:39

Hi Rudi,

mithilfe deines Codes konnte ich mein Problem lösen. Allerdings musste ich den Teil

arText = Split(IEApp.Document.Body.innerText, vbCrLf)
....

ändern, da es die Funktion Split in der Excelversion 97 noch nicht gab. Da ich aber nur einen bestimmten (einmalig vorkommenden) Text suche, verwende ich stattdessen
If Instr(IEApp.Document.Body.innerText, "MeinSuchtext") > 0 Then MsgBox "Text vorhanden"
Nochmals vielen Dank - hast mir sehr geholfen.


GrußformelBeverly's Excel - Inn


  

Betrifft: Danke für die Rückmeldung! Gerne. o.T. von: M. Rudolf
Geschrieben am: 16.12.2009 17:03:44

o.T.


  

Betrifft: AW: Text auf Webseite finden von: Beverly
Geschrieben am: 16.12.2009 13:54:36

Hi Peter,

danke fürs Drüberschauen, aber das ist ja eben das Problem, dass es eine Abfrage aufgrund der Sicherheitseinstellungen ist (genau wie die Abfrage wegen der Makros) - und die lassen sich nicht mittels Application.DisplayAlerts abschalten.


GrußformelBeverly's Excel - Inn


Beiträge aus den Excel-Beispielen zum Thema "Text auf Webseite finden"