VBA : Piloter Internet Explorer via EXCEL [Résolu]

Molenn
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Dernière intervention
23 février 2011
- 22 août 2006 à 16:05 - Dernière réponse : Molenn
Messages postés
797
Date d'inscription
mardi 7 juin 2005
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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
michelxld
Messages postés
402
Date d'inscription
vendredi 6 août 2004
Dernière intervention
12 octobre 2008
- 22 août 2006 à 18:32
3
Merci
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

Merci michelxld 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de michelxld
Molenn
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Dernière intervention
23 février 2011
- 23 août 2006 à 08:45
0
Merci
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
Commenter la réponse de Molenn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.