Parser une page HTML d'un site Joomla en VBA

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Parser une page HTML d'un site Joomla en VBA

    Bonjour le forum,

    Dans une application Excel, je souhaiterais tester si la version utilisée est la dernière mise à jour. Le numéro de la version est dans un article Joomla sous forme de texte dans un tableau.
    Pour cela, je teste si une connexion internet est active,
    si oui, je me connecte sur l'article du site Joomla selon une procédure trouvée sur le NET. Elle offre l'avantage de ne pas être liée à un navigateur.
    Code:
    Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
        ByVal lpFile As String, ByVal lpParameters As String, _
        ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    
    Sub GoToSite()
        Dim adrSite As String 
        adrSite = "http://www.xxxxxxxxxx/index.php?option=com_content&view=article&id=73&Itemid=58&lang=fr"
        ShellExecute 0, "", adrSite , "", "", 0
    End Sub
    Questions
    1. Est-il possible d'accéder au site Joomla en mode "silencieux" (sans afficher la page)
    2. Comment, en VBA, puis-je "parser" le html de la page pour trouver la valeur de la version?


    D'avance merci pour votre aide et bon dimanche

    Harry

  • #2
    Re : Parser une page HTML d'un site Joomla en VBA

    Bonjour

    ShellExecute est une instruction qui te permet de lancer l'exécution d'un programme, que ce soit ton navigateur ou notepad, calc, ... Comme si tu avais double-cliqué sur l'icône. Rien de plus.

    Ce n'est pas avec ShellExecute que tu vas récupérer le code html de la page.

    Essaie plutôt :
    Using VBA, I am trying to retrieve the contents of the Source of a web page (the same as would appear if you right-clicked on the page and chose "View Source") into a variable so I can work on it in VBA (using InStr, etc.). The problem is I can use code such as strHTMLText =...

    ou
    I would like to direct an excel VBA form to certain URLs, get the HTML source and store that resource in a string. Is this possible, and if so, how do I do it?


    Maintenant, concernant ton besoin, je ferais personnellement autrement : j'écrirai un petit fichier php très simple qui ouvrirait (en lecture) le fichier /libraries/cms/version/version.php. Ton script écrirait alors simplement le numéro de version de Joomla (en HTML, en CSV, en XML, ...) et il te restera juste à récupérer ce numéro. Très peu de parsing dans ce cas et une garantie à 100% d'avoir le bon numéro de version.

    (note : l'emplacement du fichier version.php n'était pas celui-là pour J1.5, je pense que c'était /includes/version.php).
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #3
      Envoyé par cavo789 Voir le message
      ShellExecute est une instruction qui te permet de lancer l'exécution d'un programme, que ce soit ton navigateur ou notepad, calc, ... Comme si tu avais double-cliqué sur l'icône. Rien de plus.
      Ce n'est pas avec ShellExecute que tu vas récupérer le code html de la page.
      Essaie plutôt :
      Using VBA, I am trying to retrieve the contents of the Source of a web page (the same as would appear if you right-clicked on the page and chose "View Source") into a variable so I can work on it in VBA (using InStr, etc.). The problem is I can use code such as strHTMLText =...

      ou
      I would like to direct an excel VBA form to certain URLs, get the HTML source and store that resource in a string. Is this possible, and if so, how do I do it?
      Bonjour Cavo789,
      Merci pour la réponse.
      Les références m'ont aidé à developper ma procédure.
      La version n'est pas celle de Joomla mais la date de la dernière mise à jour de mon application que je place dans un article.
      Si cela peut astyle="display:none;visibility:hidden;" data-cfsrc="images/buttons/viewpost-right.png" alt="Voir le message" /><noscript><img class="inlineimg" src="images/buttons/viewpost-right.png" alt="Voir le message"/></noscript></a>
      </div>
      <div class="message">Bonjour<br/>
      <br/>
      ShellExecute est une instruction qui te permet de lancer l'exécution d'un programme, que ce soit ton navigateur ou notepad, calc, ... Comme si tu avais double-cliqué sur l'icône. Rien de plus.<br/>
      <br/>
      Ce n'est pas avec ShellExecute que tu vas récupérer le code html de la page.<br/>
      <br/>
      Essaie plutôt : <br/>
      <a href="http://www.mrexcel.com/forum/excel-questions/556844-read-html-source-code-visual-basic-applications.html#post2752378" target="_blank">http://www.mrexcel.com/forum/excel-q...ml#post2752378</a><br/>
      ou<br/>
      <a href="http://stackoverflow.com/questions/2520949/getting-html-source-with-excel-vba" target="_blank">http://stackoverflow.com/questions/2...with-excel-vba</a><br/></div>

      </div>
      </div>
      </div>
      Bonjour Cavo789,<br/>
      Merci pour la réponse.<br/>
      Les références m'ont aidé à developper ma procédure.<br/>
      La version n'est pas celle de Joomla mais la date de la dernière mise à jour de mon application que je place dans un article.<br/>
      Si cela peut aider, "mon" code ci-dessous.<br/>
      <br/>
      Harry<br/>
      <br/>

      <div class="bbcode_container">
      <div class="bbcode_description">Code:</div>
      <pre class="bbcode_code"style="height:276px;">Sub SearchLastVersion()
      Dim regex As RegExp
      Set regex = New RegExp
      Dim matches As IMatchCollection2
      Dim match As Variant
      With regex
      .MultiLine = False
      .IgnoreCase = True
      .Global = True
      .Pattern = "[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}"
      End With
      Const URL$ = "http://www.xxxxxxxxxx.eu/index.php?option=com_content&view=article&id=95&It emid=58&lang=fr"
      With CreateObject("MSXML2.XMLHTTP")
      .Open "GET", URL, False
      .send
      Set matches = regex.Execute(.responseText)
      For Each match In matches
      MsgBox ("Value : " & match.Value)
      Next
      End With
      End Sub</pre>
      </div>
      <!-- END TEMPLATE: bbcode_code -->
      </blockquote>

      <!-- attachments -->

      <blockquote class="blockrow signature restore preview">

      </blockquote>
      <!-- / attachments -->
      </div>

      <div class="blockfoot actionbuttons"></div>
      <!-- END TEMPLATE: newpost_preview -->

      <h2 class="blockhead">Votre message</h2>
      <div class="wysiwyg_block">
      <div class="blockbody formcontrols">
      <div class="section">
      <!-- BEGIN TEMPLATE: newpost_usernamecode -->

      <!-- END TEMPLATE: newpost_usernamecode -->


      <div class="blockrow">
      <label for="title" class="full">Intitulé:</label>
      <input type="text" class="primary textbox full" name="title" id="title" value="Re : Parser une page HTML d'un site Joomla en VBA" maxlength="85" tabindex="1" title="Facultatif" />
      *<img id="display_posticon" style="display:none;visibility:hidden;" data-cfsrc="clear.gif" alt="" /><noscript><img id="display_posticon" src="clear.gif" alt="" /></noscript>ider, "mon" code ci-dessous.

      Harry

      Code:
      Sub SearchLastVersion()
      Dim regex As RegExp
      Set regex = New RegExp
      Dim matches As IMatchCollection2
      Dim match As Variant
      With regex
          .MultiLine = False
          .IgnoreCase = True
          .Global = True
          .Pattern = "[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}"
      End With
        Const URL$ = "http://www.xxxxxxxxxx.eu/index.php?option=com_content&view=article&id=95&Itemid=58&lang=fr"
        With CreateObject("MSXML2.XMLHTTP")
          .Open "GET", URL, False
          .send
            Set matches = regex.Execute(.responseText)
          For Each match In matches
              MsgBox ("Value : " & match.Value)
          Next
          End With
      End Sub

      Commentaire


      • #4
        Re : Parser une page HTML d'un site Joomla en VBA

        L'aspect de ma réponse est bizarre.
        Si elle n'est pas lisible, en synthèse: merci
        Harry

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X