VBA - Zoeken op internet en acties verrichten

Status
Niet open voor verdere reacties.

Roeland035

Gebruiker
Lid geworden
30 mrt 2015
Berichten
291
Beste Forumleden,

Is het mogelijk om doormiddel van VBA (macro) te zoeken op het internet?
In mijn geval moet hij uit een tabelletje artikelnummers halen en die vervolgens op zoeken op een lokale website.
De stappen zijn als volgt:

1. Open weblink (dit is niet moeilijk te coderen)
2. Vul username en password in. (dit zijn twee tekstvelden onder elkaar)
3. Klik op enter.
5. Klik rechtsboven op de inputbox (hier kan je zoeken)
6. Vul artikelnummer in vanuit het tabelletje in excel en klik op enter.
7. Dubbelklik de eerste regel aan.
8. Dubbelklik op een cel in het geopende venster. (deze cel bevat de verkoopprijs).
9. Kopiëer 4e inputbox.
10. Print hem in Excel.

Dus nogmaals de vraag.
Is dit mogelijk en redelijk simpel te realiseren?
Indien dit mogelijk is zou dat heel veel tijd besparen!

Ik ben zelf al een beetje bezig geweest en ben op de volgende code gekomen:

Code:
Sub Search_Web()
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Top = 0
    objIE.Left = 0
    objIE.Width = 800
    objIE.Height = 600
    objIE.AddressBar = 0
    objIE.StatusBar = 0
    objIE.Toolbar = 0
    objIE.Visible = True 'We will see the window navigation
    
    objIE.Navigate ("http://nijhof.logictrade.nl/Article/Overview.aspx?WindowInstance=3&WindowRoot=True")
    Do
    DoEvents
    Loop Until objIE.ReadyState = 4
    
            pageSource = objIE.Document.body.Outerhtml
            
                objIE.Document.GetElementByID("btbUserName").Value = "helaas"
                objIE.Document.GetElementByID("btbPassword").Value = "bijna"
                objIE.Document.GetElementByID("bbtnLogin").Click
                [COLOR="#FF0000"]objIE.Document.GetElementByID("ctl00_cphMaster_btbKeyword").Value = "A001506403"[/COLOR]
                
    Do
    DoEvents
    Loop Until objIE.ReadyState = 4
    MsgBox "Done!"
                
End Sub

Hij geeft echter een foutmelding nadat hij is ingelogd. Het gebeurd wanneer hij de roodgekleurde lijn wilt uitvoeren.
Foutmelding:
Objectvariable of blokvariabele With is niet ingesteld.

Ik probeer bij deze lijn de value van de filter inputbox te veranderen om zo te zoeken naar een opgegeven artikel, maar helaas :(

Iemand ideeën?
 
Plaats ook even de HTML code van de betreffende pagina erbij. Dan kan men er gerichter naar kijken.
 
Is goed, maar denk niet dat men er veel wijzer van wordt. Het is één grote chaos ^^
Tevens kon ik de inputbox niet vinden in de source code, maar wel via element inspecteren =/

Kon hem helaas niet via de website uploaden omdat het bestand teveel regels bevat.
Dus hier via tinyupload:
http://s000.tinyupload.com/?file_id=06151071838479744347

Element inspecteren:

e03ntu.png
 
Laatst bewerkt:
Er zal sowieso om gevraagd gaan worden als je die code niet plaatst ;)
 
Na de .click een wachtlus van 5sec.
 
Als dat inderdaad de oplossing is kan je dit doen na die .click:
Code:
Do
DoEvents
Loop Until objIE.ReadyState = 4
 
Code:
Do While .Busy Or .ReadyState <> 4
            DoEvents
        Loop
Application.Wait DateAdd("s", 2, Now)
Ik vertrouw de busy en de readystate niet zo, en voeg voor de zekerheid altijd nog een wachtlus toe.
 
Code:
Do While .Busy Or .ReadyState <> 4
            DoEvents
        Loop
Application.Wait DateAdd("s", 2, Now)
Ik vertrouw de busy en de readystate niet zo, en voeg voor de zekerheid altijd nog een wachtlus toe.

Zelfde foutmelding als voorheen:

"Objectvariabele of blokvariabele With is niet ingesteld"

En dan wordt de volgende lijn geel gekleurd:

objIE.Document.GetElementByID("ctl00_cphMaster_btbKeyword").Value = "A001506403"

Er is toch echt iets mis met het ID.

Code:
Sub Search_Web()
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Top = 0
    objIE.Left = 0
    objIE.Width = 800
    objIE.Height = 600
    objIE.AddressBar = 0
    objIE.StatusBar = 0
    objIE.Toolbar = 0
    objIE.Visible = True 'We will see the window navigation
    
    objIE.Navigate ("http://nijhof.logictrade.nl/Article/Overview.aspx?WindowInstance=3&WindowRoot=True")
     Do While objIE.Busy Or objIE.ReadyState <> 4
        DoEvents
            Loop
    
            pageSource = objIE.Document.body.Outerhtml
            
                objIE.Document.GetElementByID("btbUserName").Value = " "
                objIE.Document.GetElementByID("btbPassword").Value = " "
                objIE.Document.GetElementByID("bbtnLogin").Click
                    Application.Wait DateAdd("s", 5, Now)
                        objIE.Document.GetElementByID("ctl00_cphMaster_btbKeyword").Value = "A001506403"
                
     Do While objIE.Busy Or objIE.ReadyState <> 4
        DoEvents
            Loop
                MsgBox "Done!"
                
End Sub
 
Laatst bewerkt:
Jouw url werkt niet bij mij.
Je bent de do-while loop in mijn code vergeten.
Staat na het inloggen, de inputbox in een ander internetexplorer-venster?
 
Jouw url werkt niet bij mij.
Je bent de do-while loop in mijn code vergeten.
Staat na het inloggen, de inputbox in een ander internetexplorer-venster?

Het vervelende is dat het een lokale website is. Het is namelijk een soort van control panel/dashboard van ons bedrijf. (ERP-Systeem)
Ik kon ook niet zo snel een website vinden dat op dezelfde manier is opgebouwd.

Dit zijn de afbeeldingen

21ad8af.png

200urg2.png


Rechtsboven zie je het Filter/Search veld dat ik probeer in te vullen.

Ik heb geen idee of jullie hier wijzer van worden, door misschien de layout te herkennen of iets in die richting.
 
Laatst bewerkt:
Ik word hier niet wijzer van, succes verder.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan