VBA-Excel : Intranet : Lancer une requète
Bonjour,
Je travaille sur EXCEL 2010 sous windows 7. Je souhaite automatiser une requète faite sur notre intranet en naviguant sur une page web. Cette page contient deux frames.
<frame name="HIDDEN" id="HIDDEN" src="/binTatoo/IHM/FrameCachee.aspx" frameBorder="0" scrolling="no">
<frame name="MAIN" id="MAIN" src="/binTatoo/IHM/select_env1.aspx" frameBorder="0" scrolling="yes">
J'utilise le modèle objet HTML doc de VBA.
Ma macro VBA, lance ie, charge le contenu de la page ds un doc HTML. La macro cherche la frame : "MAIN" et clique sur le bon objet. Ca marche. Ie passe à une seconde page.
Mais , arrivé sur la 2ème page l'objet HTML doc que je récupère est vide ???? Il y a rapport avec le fait que la page est composée de frame mais je ne comprends exactement lequel ni comment continuer dans ma navigation.
Tout commentaire est le bienvenu
Etienne
Voici le code que j'utilise
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Sub DownloadTableFromTATOO()
Dim oIE As SHDocVw.InternetExplorer
Dim oHMTLDoc As MSHTML.HTMLDocument
Dim iHTMLCol As IHTMLElementCollection
Dim iHTML_Frame As IHTMLFrameElement
Dim oHMTLDoc2 As MSHTML.HTMLDocument
'Open IE and navigate to URL
Set oIE = New SHDocVw.InternetExplorer
oIE.Width = 500: oIE.Height = 500
oIE.Visible = True
'TATOO Home Page
oIE.Navigate cURL_TATOO_Home
Set oIE = Find_IE_Ref(cTitle_TATOO, cTitle_TATOO) 'Workaround disconnection issue[/COLOR]
'TATOO prod page
Set oHMTLDoc = oIE.Document
Set iHTML_Frame = oIE.Document.all.tags("frame").Item("MAIN")
Set oHMTLDoc2 = oIE.Document.frames("MAIN").Document
Set iHTMLCol = oHMTLDoc2.getElementsByTagName("a")
Find_And_Click iHTMLCol, "href", cURL_TATOO_Prod
'Set TABLE=TA1541
Set oHMTLDoc = oIE.Document
Set iHTMLCol = oHMTLDoc.getElementsByTagName("input")
'IHTML Col est vide , donc le reste ne marche plus]
Find_And_Set_Attribute iHTMLCol, "name", "NumTable", "TA1541"
End Sub |
J'ai fait une copie d'écran des pages HTML mais je ne peux pas l'attacher pour le moment.