Internet informatie ophalen en plaatsen in veld formulier Access 2007

Status
Niet open voor verdere reacties.

guidohaesen

Gebruiker
Lid geworden
7 dec 2013
Berichten
6
Wellicht is mijn probleem al vaker hier besproken en opgelost, maar ik heb het niet kunnen vinden.

Ik heb een formulier waarin ik op een veld dubbelclick en internet explorer moet worden gesturd. in een veld wordt de data geschoten en de knop met zoeken geactiveerd.
Dit werkt.
Ook het resultaat is te zien, maar.... ik wil graag de waarde terug in MS Acces in het veld waarop ik heb dubbelgeklikt.

De vetgedrukte regel gaat mis.

Code:
Private Sub Chassisnummernieuw_DblClick(Cancel As Integer)
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "https://www.vdcnederland.eu/a2sp/groenekaart.aspx"
IE.Visible = True
While IE.Busy
    DoEvents
Wend
IE.Document.all("ctl00_ContentPlaceHolder1_Step1WebControl1_txtKenteken").value = Me.Kentekennieuw.value
IE.Document.all("ctl00_ContentPlaceHolder1_Step1WebControl1_btnAanvullenOvi").Click
While IE.Busy
DoEvents
Wend

[B]IE.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtChassisnummer").innerText[/B]

'onderstaande regel heb ik ook tervergeefs geprobeerd. helaas
[B]'IE.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtChassisnummer").Me.Chassisnummernieuw[/B]

End Sub

Sorry voor mijn Noob question maar ik heb geen enkele cursus gehad in VBA. (wordt wellicht wel eens tijd :D )
 
Laatst bewerkt door een moderator:
Code:
Me.Chassisnummernieuw.text  = IE.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtChassisnummer").Value
 
Dank u wel alphamax.
Maar bij mij blijft de cel Chassisnummernieuw akelig leeg.
Kan het zijn dat de website te lang bezig is gegevens op te halen en VBA dan te snel de "lege" cel inleest?
kan ik de code:
While IE.Busy
DoEvents
Wend

verlengen of is er iets anders aan de hand?
 
Laatst bewerkt door een moderator:
klopt, de code loopt door terwijl de site nog aan het opbouwen is, daardoor lees je lege cellen
Code:
Application.Wait Now() + TimeValue("00:00:02")
is een vertraging en zou ik op een paar plaatsen inbouwen, je merkt wel als het goed werkt.
 
Dat dacht ik al. Maar.
Bij deze code krijg ik de volgende foutmelding:
Complieer fout:
Kan de methode of het gegevenslid niet vinden


Code:
Private Sub Chassisnummernieuw_DblClick(Cancel As Integer)
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "https://www.vdcnederland.eu/a2sp/groenekaart.aspx"
IE.Visible = False
While IE.Busy
    DoEvents
Wend
IE.Document.all("ctl00_ContentPlaceHolder1_Step1WebControl1_txtKenteken").value = Me.Kentekennieuw.value
IE.Document.all("ctl00_ContentPlaceHolder1_Step1WebControl1_btnAanvullenOvi").Click

Application.Wait Now() + TimeValue("00:00:02")
Me.Chassisnummernieuw.Text = IE.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtChassisnummer").value
End Sub
 
Laatst bewerkt door een moderator:
@guidohaesen Code dient tussen coidetags te geplaatst te worden en onnodige quotes verwijderd. Wanneer je direct reageert op een reactie is het niet nodig om dat bericht te quoten. Onnodig quoten heet dat, hetgeen niet gewenst is.
 
vergeten dat het access weg, ik doe heel veel in excel, en zeer weining in access
google "excel Application.Wait in access"
 
alphamax of andere forumleden.
Kunnen jullie mij nog een stapje verder helpen?

Onderstaande code werkt perfect.
Code:
Private Sub Chassisnummer_DblClick(Cancel As Integer)
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "https://www.vdcnederland.eu/a2sp/tijdelijk5.aspx"
IE.Visible = False
While IE.Busy
    DoEvents
Wend
IE.Document.all("ctl00_ContentPlaceHolder1_Step1WebControl1_txtOudkenteken").value = Me.Kenteken.value
IE.Document.all("ctl00_ContentPlaceHolder1_Step1WebControl1_btnAanvullenOvi").Click
 WaitUntil = Now + TimeValue("00:00:04")
   Do
      DoEvents
   Loop Until Now >= WaitUntil

Me.Chassisnummer.Text = IE.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtChassisnummer").value
 WaitUntil = Now + TimeValue("00:00:02")
   Do
      DoEvents
   Loop Until Now >= WaitUntil


End Sub

Maar in deze code kan ik slechts 1 veld vullen.
Ik dacht slim te zijn en gelijk meerdere cellen te laten inlezen, maar helaas.

VBA geeft dan een foutmelding dat de focus verkeerd is...

Ik wil graag volgende cellen ook laten inlezen in het zelfde document van hetzelfde webpagina.
Code:
Me.Datum_afgeifte_deel_1.Text = IE.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtDatumEersteToelating").value
Me.Model.Text = IE.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtType").value

Zou dit kunnen?
 
Plaats een voorbeeldbestand met het formulier ontdaan van persoonlijke informatie.
Zo wordt je sneller en beter geholpen.
 
Ik vond je probleem wel interessant, en was zelf al bezig met stoeien. Uiteraard kan het...
Code:
Private Sub Auto_Logo0_Click()
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Navigate "https://www.vdcnederland.eu/a2sp/groenekaart.aspx"
    ie.Visible = False
    While ie.Busy
        WaitUntil = Now + TimeValue("00:00:02")
        Do
        DoEvents
        Loop Until Now >= WaitUntil
        DoEvents
    Wend
    
    ie.Document.All("ctl00_ContentPlaceHolder1_Step1WebControl1_txtKenteken").Value = Me.Kenteken.Value
    WaitUntil = Now + TimeValue("00:00:02")
    ie.Document.All("ctl00_ContentPlaceHolder1_Step1WebControl1_btnAanvullenOvi").Click
    While ie.Busy
        WaitUntil = Now + TimeValue("00:00:02")
        Do
        DoEvents
        Loop Until Now >= WaitUntil
        DoEvents
    Wend
    ''WaitUntil = Now + TimeValue("00:00:02")
    Do
    DoEvents
    Me.Chassisnummer.Value = ie.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtChassisnummer").Value
    Loop Until Now >= WaitUntil
    DoEvents

    WaitUntil = Now + TimeValue("00:00:00")
    Do
    DoEvents
    Me.Merk = ie.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtMerk").Value
    Loop Until Now >= WaitUntil
    DoEvents
    WaitUntil = Now + TimeValue("00:00:00")
    Do
    DoEvents
    Me.Type = ie.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtType").Value
    Loop Until Now >= WaitUntil
    DoEvents
    WaitUntil = Now + TimeValue("00:00:00")
    Do
    DoEvents
    Me.Voertuigcategorie = ie.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_ddlVoertuigcategorie").Value
    Loop Until Now >= WaitUntil
    DoEvents
    WaitUntil = Now + TimeValue("00:00:00")
    Do
    DoEvents
    Me.Ledig_gewicht = ie.Document.getElementById("ctl00_ContentPlaceHolder1_Step1WebControl1_txtLediggewicht").Value
    Loop Until Now >= WaitUntil
    DoEvents
    If Me.Dirty Then Me.Dirty = False
    ie.Quit

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan