Avatar billede micaud Mester
11. marts 2019 - 21:22 Der er 5 kommentarer og
2 løsninger

Link til Virk.dk

Hej.

Jeg vil gerne have mit Excel ark til at finde navn, adresse mv. fra datacvr.virk.dk

Nedenstående viser uddrag af HTML koden fra hjemmesiden og min VB kode, og her i første omgang, vil jeg bare hente adresse. Det virker fint at slå op via CVR, som jeg har i en celle, men hvad skal der stå i min vb linje, før msgbox ??

HTML kode:
<div class="row dataraekker">
    <div class="col-sm-6 datatitler" data-pdf-class="column4">
        <h2><strong>Adresse</strong><div class="help_element help_acc Help-stamdata-data-adresse"></div></h2>
    </div>
    <div class="col-sm-6
            " data-pdf-class="column8">
        HER STÅR ADRESSEN  </div>


VB KODE:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Row = Range("CVR").Row And Target.Column = Range("CVR").Column Then
    Dim IE As New InternetExplorer
    IE.Visible = True
    IE.Navigate "https://datacvr.virk.dk/data/visenhed?enhedstype=virksomhed&id=" & Range("CVR")
    Do
    DoEvents
    Loop Until IE.ReadyState = READYSTATE_COMPLETE
    Dim Doc As HTMLDocument
    Set Doc = IE.Document
    Dim sAD As String
    sAD = Doc.getElementsByTagName("?????").innerText
    MsgBox sAD

  End If
End Sub

Håber I kan hjælpe, tak.
12. marts 2019 - 06:17 #1
Det er ikke så simpelt - de har ikke navne på deres html i den del af siden.
Du kan bruge getElementsByClassName("table stamdata")(0)

Det vil give dig hele tabellen retur, som du så efterfølgende kan trække data ud af.

Du kan overveje at bruge innerhtml i stedet og håndtere data som xml i stedet.
Avatar billede micaud Mester
12. marts 2019 - 09:40 #2
Hej Thor.

Tusind tak for hurtig svar.

Jeg er helt ny i HTML, så kan du evt. give et eksempel på, hvordan jeg bruger innerhtml og xml i Excel?

Jeg vil indtil da forsøge, at trække tabellen ud, som du også notere.
12. marts 2019 - 10:22 #3
Åh - det er ikke simpelt. Et skud fra hoften:

    sAD = Doc.getElementsByClassName("table stamdata")(0).outerHTML
    Dim xmldoc As DOMDocument60
    Set xmldoc = New DOMDocument60
    xmldoc.LoadXML sAD
    Dim node As IXMLDOMNode
    On Error Resume Next 'BØR IKKE BRUGES!
    For Each node In xmldoc.SelectNodes("/div/div/div")
        If Not node.NextSibling Is Nothing Then
            MsgBox node.FirstChild.FirstChild.FirstChild.XML
            MsgBox node.NextSibling.FirstChild.XML
        End If
    Next
    On Error GoTo 0
Avatar billede micaud Mester
12. marts 2019 - 10:44 #4
Hej igen.

Det var et fantastisk skud fra hoften. Nu får jeg informationerne i en msgbox, og dem kan jeg jo så parkerer i nogle celler og så hente derfra.

Nu vil jeg forsøge at forstå koden, men tusind tak for hjælpen.
Avatar billede micaud Mester
12. marts 2019 - 10:58 #5
Kan du vise mig koden, således jeg også får firmanavnet med?

Se eksempel her vedr. TDC A/S

https://datacvr.virk.dk/data/visenhed?enhedstype=virksomhed&id=14773908&soeg=tdc&type=undefined&language=da

Kan du i øvrigt anbefale, hvor jeg lærer lidt mere om HTML koder?

Tak på forhånd
12. marts 2019 - 11:14 #6
Prøv at bruge

    Dim firma As String
    firma = Doc.getElementsByClassName("enhedsnavn")(1).innerHTML
Avatar billede micaud Mester
12. marts 2019 - 11:19 #7
Mange tak, det virker perfekt...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester