enviar datos desde excel a un formulario de una pagina web
Publicado por marta (2 intervenciones) el 28/02/2014 10:08:08
Buenos días:
Soy Marta Chacón, os escribo porque tengo el siguiente problema de Visual Basic.
He programado en otros lenguajes como java o C pero en Visual Basic nunca había hecho ningún proyecto.
Mi problema es el siguiente:
Quiero realizar un formulario en excel, utilizando una macro programada en Visual Basic que me rellene un formulario que hay en una página web de forma automática al pulsar un botón que me he creado. Me surgen dos inconvenientes:
-Por un lado, en el código que adjunto a continuación, me da un error cuando lo ejecuto. El error es el 438, el objeto no admite esta propiedad o método. La línea en la que me da el error es ie.document.form.Address.Value = sAdd1.
-El siguiente problema, es que no se como realizar el formulario en una hoja de excel y que estos datos se envíen a la página web.
En el código que adjunto a continuación he conseguido abrir la página web con el navegador que quiera, pero no he podido hacer nada más.
Si alguien pudiera echarme una mano estaría super agradecida.
Gracias.
El código es el siguiente:
Sub push_web_info()
reee = ZipPlusFour("9 Spring Hill Rd", "Annandale", "NJ")
'Option Explicit
End Sub
Function ZipPlusFour(sAdd1 As String, _
sCity As String, _
sState As String _
) As String
' Option Explicit
Dim ie As Object
Dim sResult As String
Dim sCityState As String
Dim lStartCity As Long
Dim dtTimer As Date
Dim lAddTime As Long
Const sUPSURL As String = "http://zip4.usps.com/zip4/welcome.jsp"
Const lREADYSTATE_COMPLETE As Long = 4
Set ie = CreateObject("InternetExplorer.Application")
ie.silent = False
ie.Visible = True
ie.navigate "http://zip4.usps.com/zip4/welcome.jsp"
dtTimer = Now
lAddTime = TimeValue("00:00:20")
Do Until ie.readystate = lREADYSTATE_COMPLETE And Not ie.busy
DoEvents
If dtTimer + lAddTime > Now Then Exit Do
Loop
ie.document.form.Address.Value = sAdd1
ie.document.form.City.Value = sCity
ie.document.form.State.Value = sState
ie.document.form.submit
dtTimer = Now
lAddTime = TimeValue("00:00:20")
Do Until ie.readystate = lREADYSTATE_COMPLETE And Not ie.busy
DoEvents
If dtTimer + lAddTime > Now Then Exit Do
Loop
sResult = ie.document.body.innertext
sCityState = sCity & " " & sState
lStartCity = InStr(1, sResult, sCityState, vbTextCompare)
lStartCity = InStr(lStartCity + 1, sResult, sCityState, vbTextCompare)
If lStartCity > 0 Then
ZipPlusFour = Mid(sResult, lStartCity + Len(sCityState) + 2, 10)
Else
ZipPlusFour = "Not Found"
End If
ie.Quit
Set ie = Nothing
End Function
Soy Marta Chacón, os escribo porque tengo el siguiente problema de Visual Basic.
He programado en otros lenguajes como java o C pero en Visual Basic nunca había hecho ningún proyecto.
Mi problema es el siguiente:
Quiero realizar un formulario en excel, utilizando una macro programada en Visual Basic que me rellene un formulario que hay en una página web de forma automática al pulsar un botón que me he creado. Me surgen dos inconvenientes:
-Por un lado, en el código que adjunto a continuación, me da un error cuando lo ejecuto. El error es el 438, el objeto no admite esta propiedad o método. La línea en la que me da el error es ie.document.form.Address.Value = sAdd1.
-El siguiente problema, es que no se como realizar el formulario en una hoja de excel y que estos datos se envíen a la página web.
En el código que adjunto a continuación he conseguido abrir la página web con el navegador que quiera, pero no he podido hacer nada más.
Si alguien pudiera echarme una mano estaría super agradecida.
Gracias.
El código es el siguiente:
Sub push_web_info()
reee = ZipPlusFour("9 Spring Hill Rd", "Annandale", "NJ")
'Option Explicit
End Sub
Function ZipPlusFour(sAdd1 As String, _
sCity As String, _
sState As String _
) As String
' Option Explicit
Dim ie As Object
Dim sResult As String
Dim sCityState As String
Dim lStartCity As Long
Dim dtTimer As Date
Dim lAddTime As Long
Const sUPSURL As String = "http://zip4.usps.com/zip4/welcome.jsp"
Const lREADYSTATE_COMPLETE As Long = 4
Set ie = CreateObject("InternetExplorer.Application")
ie.silent = False
ie.Visible = True
ie.navigate "http://zip4.usps.com/zip4/welcome.jsp"
dtTimer = Now
lAddTime = TimeValue("00:00:20")
Do Until ie.readystate = lREADYSTATE_COMPLETE And Not ie.busy
DoEvents
If dtTimer + lAddTime > Now Then Exit Do
Loop
ie.document.form.Address.Value = sAdd1
ie.document.form.City.Value = sCity
ie.document.form.State.Value = sState
ie.document.form.submit
dtTimer = Now
lAddTime = TimeValue("00:00:20")
Do Until ie.readystate = lREADYSTATE_COMPLETE And Not ie.busy
DoEvents
If dtTimer + lAddTime > Now Then Exit Do
Loop
sResult = ie.document.body.innertext
sCityState = sCity & " " & sState
lStartCity = InStr(1, sResult, sCityState, vbTextCompare)
lStartCity = InStr(lStartCity + 1, sResult, sCityState, vbTextCompare)
If lStartCity > 0 Then
ZipPlusFour = Mid(sResult, lStartCity + Len(sCityState) + 2, 10)
Else
ZipPlusFour = "Not Found"
End If
ie.Quit
Set ie = Nothing
End Function
Valora esta pregunta


0