Je ne sais pas si je fais référence correctement au bouton. Je continue à recevoir:
Erreur d'exécution '438': l'objet ne prend pas en charge cette propriété ou méthode.
Voici à quoi ressemble mon code pour le moment:
https://indexcalculator.ftserussell.com/
La page Web que j'utilise est:
Sub russInd()
Dim oButton As Object, HTMLdoc As Object
Dim sht1 As Worksheet, myURL As String
Set ie = CreateObject("InternetExplorer.Application")
Set sht1 = Worksheets("Day 1")
myURL = sht1.Cells(32, 2).Value
ie.navigate myURL
ie.Visible = True
Do Until ie.ReadyState = 4
DoEvents
Loop
'Locate The correct forms and buttons
Set HTMLdoc = ie.document
Set oButton = HTMLdoc.querySelectorAll("a[href='javascript:submitForm(document.forms[0].action);']")
'Check All Checkboxes
HTMLdoc.getElementByID("chkAll").Click
oButton.Click
End Sub
3 Réponses :
Réglez votre sélecteur sur ceci: (il indique rechercher n'importe quelle image dans un élément A parent.)
Sub russInd()
Dim oButton As Object, HTMLdoc As Object
Dim sht1 As Worksheet, myURL As String
Set ie = CreateObject("InternetExplorer.Application")
Set sht1 = Worksheets("Day 1")
myURL = sht1.Cells(32, 2).Value
ie.navigate myURL
ie.Visible = True
Do Until ie.ReadyState = 4
DoEvents
Loop
'Locate The correct forms and buttons
Set HTMLdoc = ie.document
Set oButton = HTMLdoc.querySelectorAll("a > img")
'Check All Checkboxes
HTMLdoc.getElementByID("chkAll").Click
oButton.Click
End Sub
Voici le code complet avec la modification:
Set oButton = HTMLdoc.querySelectorAll("a > img")
Utilisez le sélecteur suivant car il fonctionne à travers toutes les étapes. Le nombre d'éléments enfants a dans le parent avec l'ID Ctlnavigation2_lblControl change de sorte que ce qui suit est un moyen robuste d'obtenir toujours ce que vous voulez sur les pages.
HTMLdoc.querySelector("#Ctlnavigation2_lblControl [href*=action]").Click
La réponse acceptée ne fonctionnera pas à travers vos différentes étapes. Vous voulez cliquer sur suivant à chaque fois et ne pas revenir en arrière dans les étapes ultérieures.
Utilisez du sélénium, il existe une bibliothèque pour VBA :)
querySelectorAll renvoie une collection. Vous voulez probablement querySelector
@mplungjan C'était ça! Merci beaucoup!
Ou plus simple
HTMLdoc.getElementById ("CtlNavigation_lblControl"). QuerySele ctor ("a"). Cliquez surOu appelez simplement le formulaire d'envoi
@mplungjan Pour référence future, cela vous dérange-t-il de me dire comment j'appellerais le formulaire de soumission
Peut-être
HtmlDoc.querySelector ("form"). Submit ().getElementByID ("CtlNavigation_lblControl")ne suffit pas - c'est la plage contenant le lien. Vous avez besoin de.getElementByID ("CtlNavigation_lblControl"). QuerySelector ("a") .CliquezEt s'excuse pour la "collection" que je voulais dire "nodelist"