VBA : Piloter Internet Explorer via EXCEL

Résolu
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 22 août 2006 à 16:05
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 23 août 2006 à 08:45
Un petit soucis, qui aurait tendance à m'énerver profondément depuis 2 heures, si une bonne âme charitable peut m'aider.


Ce que je cherche à faire :
A automatiser une opération qui est actuellement faite à la main, à savoir ouvrir une page Web dans IE, sélectionner le texte afffiché à l'écran et via un copier/coller, récupérer ce texte dans un fichier Excel.




Je suis d'abord tomber en fouillant sur le net et sur VBFrance sur ce bour de code :




'necessite d'activer la référence "Microsoft Internet Controls"
Dim IE As New InternetExplorer
Dim winShell As New ShellWindows


On Error Resume Next


For Each IE In winShell
If IE.LocationURL <> "" Then _
MsgBox IE.LocationURL & vbCrLf & vbCrLf & IE.Document.Selection.createRange.Text
Next IE


Set IE = Nothing


Cela semble répondre en partie à mon pb, puisqu'il m'affiche dans la msgbox ce qui est sélectionné dans une page web via la méthode IE.Document.Selection ...
Soucis : Cela fonctionne si la page WEB est déjà ouverte et que j'ai sélectionné du texte auparavant. Je tente de biaiser en voulant donner le focus à la page web que j'ai ouverte et en sélectionnant tout le texte (via un sendkeys "^a" ...si vous avez mieux, je vous écoute ^^).
Bien entendu, je n'y arrive pas.




J'ai donc essayé une autre méthode, avec ce petit bout de code :


Dim web 'As InternetExplorer.Application
Dim doc 'As InternetExplorer.Document
Set web = CreateObject("InternetExplorer.Application")


Là encore, pb de références : impossible de définir le .application et le .document.




Dans mon projet, j'ai déclaré les références suivantes :
Microsoft Internet Control
Microsoft HTML Library


Je pense que la propriété Document de mon objet IE est la clé pour ce que je cherche à faire, impossible de connaitre les propriétés attachées (autre que .selection trouvé dans un bout de code). J'aimerai avoir la liste de ces prorpiétés. Quand je tente au hasard une propriété (genre .name), j'ai une erreur d'automation. Ca ressemble à une erreur de référence, mais je ne vois pas quoi d'autre référencer dans mon projet.


Donc, j'écoute toute suggestion pour m'aider à résoudre mon cas (faire lpus de 200 copier/coller tous les mois, c'est pas ce qui se fait de plus passionnant).


Molenn.
A voir également:

2 réponses

michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
22 août 2006 à 18:32
bonsoir...;o)

tu peux tester cette adaptation

Sub ExporterTexte_PageInternetDansCellule()
    'Necessite d'activer la reference to Microsoft Internet Controls
    Dim IE As InternetExplorer
    Dim nFile As Integer
   
    Set IE = CreateObject("InternetExplorer.Application")
   
    With IE
        .Visible = False
        .Silent = True
        .Navigate "www.laSiteWeb.html"
        .Visible = True
        Do Until .ReadyState = READYSTATE_COMPLETE
        DoEvents
        Loop 'attend la fin du chargement


        Cells(1, 1) = .Document.DocumentElement.InnerText


        .Quit
    End With
   
    Set IE = Nothing
End Sub

bonne soiree
michel
3
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
23 août 2006 à 08:45
Ca fonctionne nickel ... Youpiiii !!!
Plus qu'à bidouiller tout ça pour adapter à mes besoins ^^
Merci !!

Il me reste des questions, si jamais tu as la réponse :
- Mon contenu s'intègre dans une cellule : je récupère l'équivalent d'un fichier texte (sauf que je n'ai pas ce fichier texte à dispo, sinon, ce serait trop facile ^^), donc données séparées par des tabulations, ou alors présentées dans un tableau : j'ai un moyen de l'intégrer dans mon fichier Excel avec la même présentation (nb de colonnes, de lignes, ...) ? L'intégrer comme avec un import de données externes en quelques sortes ?
- Quid de mon pb de déclaration de IE.document par ex ? Ca vient du fait que je sois en VBA et non en VB pur ?
- La page à laquelle j'accède repose à priori sur du xml issu d'Excel (l'icône d'Excel présente dans l'icône du fichier, des graphiques Excel à l'intérieur) ... Cette page possède un certain nomber d'onglets (tabs) gérés dans la page html.
L'idéal serait que je copie le texte affiché dans un onglet donné, mais je n'arrive pas à y accéder par défaut. Je me doute qu'il n'y a pas assez d'éléments pour m'aider, mais si jamais tu as une piste.

D'avance merci si jamais une idée venait.
Et encore merci pour le bout de code !!

Molenn
0
Rejoignez-nous