Soumettre le formulaire et récupérer des données à partir du site web VBA
Je suis en train de récupérer des données à partir de ce site à l'aide de VBA dans Excel. Ce que j'ai essayé de faire et ce qui a fonctionné a l'aide d'internet explorer objet comme ceci:
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.Navigate "http://zertifikate.finanztreff.de"
IE.document.getElementById("USFsecuritySearchDropDown").Value = "DE000BP5TBQ2"
IE.document.getElementById("USFsecuritySearchDropDownForm").submit
Do While IE.Busy Or IE.readyState <> 4 'wait until page is loaded
Application.Wait DateAdd("s", 1, Now)
Loop
MsgBox IE.document.getElementById("BP5TBQ~30~5").innerHTML
Cependant cela a fonctionné très lent et n'obtiennent pas toujours les résultats escomptés. Je soupçonne que, parfois, il n'attendez pas jusqu'à ce que la page web a été chargé. J'ai essayé de chercher des réponses et j'ai trouvé cette réponse sur stackoverflow. Maintenant, je suis à essayer de comprendre comment réécrire mon macro à l'aide de MSXML2 et MSHTML. Jusqu'à présent, j'ai été capable de le faire :
Dim IE As MSXML2.XMLHTTP60
Set IE = New MSXML2.XMLHTTP60
IE.Open "GET", "http://zertifikate.finanztreff.de", False
IE.send
While IE.ReadyState <> 4
DoEvents
Wend
Dim HTMLDoc As MSHTML.HTMLDocument
Dim htmlBody As MSHTML.htmlBody
Set HTMLDoc = New MSHTML.HTMLDocument
Set htmlBody = HTMLDoc.body
htmlBody.innerHTML = IE.responseText
HTMLDoc.getElementById("USFsecuritySearchDropDown").Value = "DE000BP5TBQ2"
s'il vous plaît, pourquoi HTMLDoc a la méthode getElementById et htmlBody ne l'est pas ? Comment pourrais-je soumettre le formulaire "USFsecuritySearchDropDownForm". J'ai essayé ceci :
HTMLDoc.getElementById("USFsecuritySearchDropDownForm").submit
mais elle doit toujours ouvrir une nouvelle fenêtre de mon navigateur par défaut, je voudrais l'avoir caché.
Il me semble que je suis absent de différence entre XMLHTTP60 et MSHTML.HTMLDocument.
Si vous pouviez s'il vous plaît m'aider ou au moins me montrer où je peux trouver cette information, je serais vraiment reconnaissant...
OriginalL'auteur Simon | 2013-08-11
Vous devez vous connecter pour publier un commentaire.
XMLHTTP envoie une requête http au serveur et reçoit en retour une réponse. MSHTML reçoit une chaîne de caractères et rend le code HTML. Lorsque vous les utilisez, XMLHTTP obtient le serveur web de la réponse et de MSHTML met que la réponse à un formulaire que vous pouvez utiliser.
Je pense que vous n'avez pas besoin de soumettre quoi que ce soit. Si vous allez sur le site et le type dans le ticker, vous arrivez à une page comme
http://zertifikate.finanztreff.de/dvt_einzelkurs_uebersicht.htn?seite=zertifikate&i=22558284&suchbegriff=DE000BP5TBQ2&exitPoint=
Qui a le ticker. Vous pouvez "OBTENIR" que l'URL directement et obtenir toutes les informations que vous avez besoin de le html qui est retourné. Cet exemple renvoie ce que je suppose est le prix de l'action.
Exemple Post
Si j'type DE000BP72DA4 dans le site, j'obtiens le même prix. Je ne parle pas allemand donc c'est difficile de dire quelle est la différence peut-être. Je ne sais pas comment utiliser le post avec l'exemple particulier, mais j'ai ajouté un autre exemple. Je ne suis pas sûr pourquoi la POSTE ne fonctionne pas avec zertifikate.finanztreff.de/dvt_einzelkurs_uebersicht.htn, mais l'a fait avec "fonds..."
OriginalL'auteur Dick Kusleika