• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA: gegevens van webpagina kopieëren en plakken als tekst

Status
Niet open voor verdere reacties.

Conseclusie

Gebruiker
Lid geworden
14 feb 2012
Berichten
358
Hallo,

Ik ben op zoek naar VBA-code voor het volgende:
Via onderstaande macro open ik een bepaalde webpagina:
Code:
Sub OpenTeletekst()
sPath = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" 'my browser = Edge
sURL = "https://teletekst-data.nos.nl/webplus?p=" & "101"
dTaskID = Shell(sPath & " " & sURL, vbNormalFocus)
End Sub
Vervolgens kopieër ik (handmatig) de volledige pagina (via <CTRL> + a , <CTRL> + c) en plak ik deze inhoud in een excel-blad (via Plakken Speciaal / Tekst).
Is dit volledige proces in een VBA-code te vangen?
 
Basiscode
Code:
Option Explicit

Public Sub Teletekst()
    Dim sResponseText As String
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", "https://teletekst-data.nos.nl/webplus?p=101", False
        .Send
        sResponseText = .responsetext
        With CreateObject("htmlfile")
            .Write sResponseText
            MsgBox .getElementsByTagName("pre")(0).innertext
        End With
    End With
End Sub
 
Dit komt meer overeen met je gestelde vraag uit bericht#1.

In Module Blad1.
Code:
Option Explicit

Public Sub Teletekst2()
    Dim aLines As Variant
    Dim sResponseText As String
    Range("A1").CurrentRegion.ClearContents
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", "https://teletekst-data.nos.nl/webplus?p=101", False
        .Send
        sResponseText = .responsetext
        With CreateObject("htmlfile")
            .Write sResponseText
            aLines = Application.Transpose(Split(.getElementsByTagName("pre")(0).innertext, vbCrLf))
            Range("A1").Resize(UBound(aLines, 1), 1) = aLines
        End With
    End With
    Range("A1").CurrentRegion.Columns.AutoFit
End Sub
 
Wow!! Ik dacht eerlijk gezegd dat het zonde van m'n tijd was om deze vraag uberhaubt te stellen, omdat ik er van overtuigd was dat het toch niet mogelijk was.... Maar dit werkt echt perfect!
Enorm bedankt Alphamax!
 
...voor mijn specifieke vraag werkt het inderdaad correct.
Maar het lijkt niet voor iedere willekeurige pagina te werken.
Bij
HTML:
https://eredivisie.nl/nl-nl/Wedstrijden/Wedstrijdoverzicht/id/2119324
krijg ik foutmelding bij
Code:
aLines = Application.Transpose(Split(.getElementsByTagName("pre")(0).innertext, vbCrLf))
"Fout 91 tijdens uitvoering: Objectvariabele of blokvariabele With is niet ingesteld."
Wat ik vreemd vind, aangezien enkel de URL anders is...
Maar ja,....dit is ook hogeschool VBA voor me.
 
Voor elke URL kan
Code:
aLines = Application.Transpose(Split(.getElementsByTagName("pre")(0).innertext, vbCrLf))
totaal anders zijn.
Deze code gaat op zoek naar PRE-tags in de HTML code van de teletekst pagina.
Deze technieken heten "webscraping", google er maar eens op.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan