Accès page web javascript

Bonjour,

Comment fait-on pour afficher une page web dans un userform ou un encart d'une la feuille excel ? il me semble avoir déjà vu ce genre de solution.

Pour le moment, j'ouvre le fichier html, par des sendkeys je fais copier/coller, et je colle les données dans la page. Mais c'est un processus fragile car il demande une bonne coordination et des tempos à régler correctement.

Mon but est d'accéder aux données de pages web dont le résultat est issu d'un calcul via javascript. Les méthodes telles que getelementbyid ne fonctionnent pas dans ce cas quand l'innerHTML de l'ID est alimenté par le résultat du script.

Merci d'avance.

Bonjour Steelson,

Si les données utiles au calcul sont présentes dans la page html et que tu connais l’algorithme du calcul à faire, il est possible d'implémenter dans le vba une fonction javascript simulant ce calcul.

Par exemple pour une fonction simplex (ici addition de 2 valeurs) on injectera la fonction "machin" (écrite en javascript) comme ceci :

Dim ScriptControl As Object, Resultat As Variant

    Set ScriptControl = CreateObject("MSScriptControl.ScriptControl")
    With ScriptControl
        .Language = "JScript"
        .AddCode "function machin(a,b) {return (a+b);}"
        Resultat = .Run("machin", X, Y)
    End With

Et ici X et Y sont 2 variables dont tu aura récupéré la valeur précédemment dans le html (ou dans le GET).

Après il te reste à voir si on peut utiliser cette méthode dans ton contexte.

Pierre

Merci Pierre,

je stocke, ce sera très utile pour d'autres cas

dans le cas présent (google map) le "calcul" n'en est pas vraiment un, il s'agit d'une interrogation à distance lors du chargement de la page (google.maps.DistanceMatrixService).

Bon j'ai trouvé la procédure que je voulais tester

Mais les scripts restent bloqués.

Donc la solution de lancer en externe une page web est la seule qui fonctionne (pour le moment sauf nouvelle découverte) !

    ShellExecute 0, "", [chemin] & "\" & Fichier, "", "", 0

    Application.Wait Time + TimeSerial(0, 0, 4)
    SendKeys ("^a")
    SendKeys ("^c")
    Application.Wait Time + TimeSerial(0, 0, 1)
    SendKeys "%{F4}"

    ActiveSheet.Paste
Rechercher des sujets similaires à "acces page web javascript"