Automatiser c'est à dire avec VBA - Cliquez sur le Lien Javascript (pas de balise d'Ancrage)
Notre entreprise utilise un programme basé sur le navigateur pour les opérations de l'entreprise. Mon but est de récupérer des données de ce système automatiquement.
Le site lui-même utilise des images assez fortement, mais je fais assez décemment de manipulation. Le problème en face de moi maintenant est de la navigation à l'écran sur lequel les données sont hébergées.
Le lien lui-même est codé en javascript, et je ne vois pas une balise d'ancrage
(L'image est un +/-, ou invisible pour l'espacement):
Code Source
<div id='Nav_4' aTag='aTarget' title='Target' aUrl="javascript:top.aaa.submitPage('NavigateTo','~/aPages/aPage.aspx?UC=a')">
<img alt='' style="margin-left:0px; width:0px "/>
<img src='/a/a.axd?d=a' alt='(Collapsed)' aAltX='(Expanded)' imgType='exp' />
<img alt=''style='width:5px; visibility:hidden;'>
<span atxt='1' class=" breadcrumbTreeItem">
Target
</span></div>
Puisque je ne pouvais pas avoir l'étiquette, ou d'effectuer une recherche pour les Liens, j'ai plutôt essayé de trouver la balise span qui contient "Cible" et essayez de l'activer.
Voici le code de travail! (i5 est un itérateur)
Set ie = GetOpenIEByURL("https://aaa.com/AAA.htm")
fIter = 0
For Each frmSet In ie.document.getElementsByTagName("Frame")
If Left(frmSet.src, 7) = "aaa/AAA" Then
myFrame = f_Iter
Exit For
End If
f_Iter = f_Iter + 1
Next
With ie
For i5 = 0 To ie.document.frames(myFrame).document.all.tags("SPAN").Length - 1
With .document.frames(myFrame).document.all.tags("SPAN").Item(i5)
If InStr(.innerText, "Target") > 0 Then
.Click
Exit For
End If
End With
Next i5
End With
En outre, dans le Module, ajoutez ce code:
'Finds an open IE site by checking the URL
Function GetOpenIEByURL(ByVal i_URL As String) As InternetExplorer
Dim objShellWindows As New ShellWindows
'ignore errors when accessing the document property
On Error Resume Next
'loop over all Shell-Windows
For Each GetOpenIEByURL In objShellWindows
'if the document is of type HTMLDocument, it is an IE window
If TypeName(GetOpenIEByURL.document) = "HTMLDocument" Then
'check the URL
If Left(GetOpenIEByURL.document.URL, 30) = Left(i_URL, 30) Then
'leave, we found the right window
Exit Function
End If
End If
Next
End Function
- Salut, j'obtiens le message d'erreur de compilation avec
Set ie = GetOpenIEByURL("https://aaa.com/AAA.htm")
. dit de la fonction ou sous n'est pas défini, en plus de tryint de déclarer des valeurs. J'ai eu IE bibliothèques sélectionnées. Toute idée de ce que pourrait être mal? - C'est totalement ma faute, j'ai oublié d'inclure le code qui appelle! J'ai édité ma question ci-dessus pour inclure dudit code 🙂 Bonne chance!
Vous devez vous connecter pour publier un commentaire.
En regardant ton code, je vois
Qui doit être utilisé avec
Set
, comme suit:Aussi loin que l'erreur sur la
Dim
ligne, vous pouvez toujours définir cela comme uneObject
ouVariant
et cela devrait encore du travail, puisque le type retourné pargetElementsByTagName
doit encore être valide.De répondre à votre mise à jour, cliquez sur un bouton, j'utilise:
Mélanger avec ton code, je voudrais mettre ensemble comme ceci (non testé):
Sub
s si vous allez faire beaucoup d'entre eux. Il vous permettra de gagner un lot f maux de tête. 😉