2016-06-17 3 views
0

Ich bin relativ neu zu VBA und VBA in Excel, ich habe versucht, herauszufinden, wie Webdaten basierend auf einem Zellenwert bedingt kratzen ("Guid") und haben nicht wirklich einen Weg gefunden, die Funktion voranzutreiben - um sie dynamisch zu machen. Ab sofort kann ich nur Daten für eine bestimmte Zelle abrufen und in einer anderen angegebenen Zelle drucken. Ich glaube, ich vermisse nur eine Art von looping Variable Funktion? (Abgesehen davon gibt es wahrscheinlich eine korrektere Art, den Code zu schreiben).Web-Scraping in Excel mit variabler URL (URL-Erweiterung)

Sub ie_open() 
    Dim wb As Workbook 
    Dim ws As Worksheet 
    Dim TxtRng As Range 
    Dim Guid As Range 
    Dim ie As Object 
    Dim URL As String 

    URL = "https://url.com/userpage=" 
    Set wb = ActiveWorkbook 
    Set ws = wb.Sheets("Detail Report - Individuals") 
    Set Guid = ws.Range("E2") 
    Set TxtRng = ws.Range("F2") 
    Set ie = CreateObject("INTERNETEXPLORER.APPLICATION") 

    ie.NAVIGATE (URL + Guid) 
    ie.Visible = True 

    While ie.ReadyState <> 4 
    DoEvents 
    Wend 

    TxtRng = ie.document.getelementbyid("lbl_Location").innertext 

End Sub 

Vielen Dank im Voraus.

Antwort

0

Aktivieren Sie einen Verweis auf HTML-Elemente (Wechseln Sie zu Extras - Referenzen. Sie sollten auch einen Verweis auf Microsoft Internet-Steuerelemente aktivieren, damit Sie IE als InternetExplorer-Objekt und nicht nur als Objekt deklarieren können, aber nicht erforderlich) , dann können Sie durch die einzelnen Elemente Schleife wie

Sub ie_open() 
Dim wb As Workbook 
Dim ws As Worksheet 
Dim TxtRng As Range 
Dim Guid As Range 
Dim ie As Object 
Dim URL As String 
'ADDED THIS 
Dim sl as Ihtmlelement 
Dim r as long = 1 

URL = "https://url.com/userpage=" 
Set wb = ActiveWorkbook 
Set ws = wb.Sheets("Detail Report - Individuals") 
Set Guid = ws.Range("E2") 
Set TxtRng = ws.Range("F2") 
Set ie = CreateObject("INTERNETEXPLORER.APPLICATION") 

ie.NAVIGATE (URL + Guid) 
ie.Visible = True 

While ie.ReadyState <> 4 
DoEvents 
Wend 

For each sl in ie.document.all 
    ws.cells(r, 1).value = sl.innertext 
    r = r + 1 
Next 

'TxtRng = ie.document.getelementbyid("lbl_Location").innertext 

End Sub 

Edit: vergaß die r Variable in der Schleife zu erhöhen, und ich denke, es IE.Document.All statt nur IE.Document sein sollte, wenn die Schleife initialisiert