Excel VBA: impossible d'get un text interne d'identification HTML

Bonjour: J'utilise Excel pour get des valeurs à partir de cette page Web: https://www2.agenciasortingbutaria.gob.es/es13/h/iexmmmfi.html

Comment puis-je get le code pour Excel VBA pour get les files pour NIF, EJF, MOD et CEL?

J'ai essayé avec getelementbyid ("NIF") et "name" mais sans résultat

Merci!

Fil de Previos: Excel VBA: Obtenez le text intérieur de la table HTML td

C'est le code que j'utilise:

Sub AEAT() Dim IE As Object Application.ScreenUpdating = False Set IE = CreateObject("InternetExplorer.Application") IE.Navigate "https://www2.agenciasortingbutaria.gob.es/es13/h/iexmmmfi.html" Application.Wait (Now + TimeValue("0:00:02")) IE.Document.getElementById("NIF").Value = Range("A1").Value Application.Wait (Now + TimeValue("0:00:01")) IE.Document.getElementById("EJF").Value = "2016" Application.Wait (Now + TimeValue("0:00:01")) IE.Document.getElementById("MOD").Value = "347" Application.Wait (Now + TimeValue("0:00:01")) IE.Document.getElementById("CEL").Value = Range("a4").Value Application.Wait (Now + TimeValue("0:00:01")) IE.Document.getElementById("env_button").Click End Sub 

Okie, alors je n'ai pas de Excel dans Windows VM, alors j'ai testé ton code à l'aide de VBScript. Donc, la solution devrait fonctionner. Vous avez 3 problèmes

  1. Naviguer n'attend pas la page à charger
  2. Votre site installe un contrôle ActiveX, qui doit d'abord être chargé
  3. Même lorsque vous réparez # 1 et # 2, vous obtiendrez une exception "Le client déconnecté" et l'object ne sera plus utilisable

Solution

Ajoutez le site aux sites de confiance dans votre configuration IE.

Paramètres IE

Ouvrez IE manuellement et installez le contrôle ActiveX

 Sub AEAT() Dim IE Set IE = CreateObject("InternetExplorer.Application") IE.visible = True hwnd = ie.hwnd IE.Navigate "https://www2.agenciasortingbutaria.gob.es/es13/h/iexmmmfi.html" msgbox ("wait") Set oShell = CreateObject("Shell.Application") For Each Wnd In oShell.Windows If hwnd = Wnd.hwnd Then Set ie = Wnd Next IE.Document.getElementById("NIF").Value = "123" End Sub Call AEAT 

J'ai mis msgbox pour insert une attente pour le moment, mais vous pouvez le réparer en utilisant ci-dessous dans excel

  Do DoEvents Loop Until ie.ReadyState = READYSTATE_COMPLETE 

PS: reference à partir des URL ci-dessous

Internet Explorer VBA Automation Error: l'object invoqué s'est déconnecté de ses clients

Erreur "L'object invoqué s'est déconnecté de ses clients" – automatiser IE 8 avec python et win32com