Continuando con la publicación anterior, hoy quiero mostrarles la forma de conectarnos a un Web Services desde Microsoft Office Excel 2003. Si aún no haz leido la publicación anterior, es bueno que lo hagas ahora en Web Services con Word 2003, ya que hoy saltaré al código inmediatamente, puesto que la forma de utilización es la misma.
Y como ya tenemos instalado el Microsoft Office 2003 Web Services Toolkit 2.01, abre Microsoft Excel y dirígete a “Herramientas/Macro/Macros…” y creas una macro llamada “macroIndicadores”
Una vez abierto el editor de Microsoft Visual Basic, ir al menú “Herramientas/Web Services Referentes…”.
Seleccionar la opción “Dirección URL del servicio Web” e ingresar la URL de Web Services, que en nuestro caso será http://www.desachile.com/webservice.asmx , luego presionar “Buscar” y seleccionar el servicio que se muestra y presionar “Agregar”.
Ahora nos vamos a nuestra macro creada anteriormente (macroIndicadores) y escribimos el siguiente código:
Sub macroIndicadores()
'
' macroIndicadores Macro
' Macro creada el 06/04/2009 por Toby
'
Dim indica As New clsws_Servicios
Dim oFullNodeList As MSXML2.IXMLDOMNodeList
Dim oFilteredNodeList As MSXML2.IXMLDOMNodeList
Dim oNode As MSXML2.IXMLDOMNode
Dim xdd As MSXML2.DOMDocument30
Dim xdlRows As MSXML2.IXMLDOMNodeList
Dim iRow As Integer
Dim valor As String
Dim lcntRows As Integer
Dim uf As String
Dim usd As String
Dim euro As String
Dim utm As String
Set oFullNodeList = indica.wsm_Indicadores("06", "04", "2009")
Set oFilteredNodeList = oFullNodeList.Item(1).selectNodes("NewDataSet")
Set xdd = New MSXML2.DOMDocument30
With xdd
.async = False
.preserveWhiteSpace = True
.loadXML oFullNodeList.Item(1).XML
Set xdlRows = xdd.selectNodes("//indicadores")
End With
lcntRows = xdlRows.Length - 1
For Each oNode In oFilteredNodeList
For iRow = 0 To lcntRows
uf = oNode.childNodes.Item(iRow).selectSingleNode("UF.valor").Text
usd = oNode.childNodes.Item(iRow).selectSingleNode("USD.valor").Text
euro = oNode.childNodes.Item(iRow).selectSingleNode("EURO.valor").Text
utm = oNode.childNodes.Item(iRow).selectSingleNode("UTM.valor").Text
Next
Next
Hoja1.Cells(2, 2) = "Indicadores Económicos del Día"
Hoja1.Cells(4, 2) = "uf"
Hoja1.Cells(5, 2) = "usd"
Hoja1.Cells(6, 2) = "euro"
Hoja1.Cells(7, 2) = "utm"
Hoja1.Cells(4, 3) = uf
Hoja1.Cells(5, 3) = usd
Hoja1.Cells(6, 3) = euro
Hoja1.Cells(7, 3) = utm
End Sub
Luego de ejecutar la macro, el resultado será:
Si te has fijado bien, el código es exactamente el mismo a la publicación anterior Web Services con Word 2003 exepto por la forma de como mostrarás los valores. Más sencillo no puede ser.
Es todo por hoy y hasta la próxima publicación.
Saludos, Toby
Hola mi amigo gracias por los tutos estan muy buenos, oye me manda el siguiente error:
ResponderEliminarNo se a definido el tipo definido por el usuario y marca con negro lo siguiente :Dim indica As New clsws_Servicios
este es mi codigo
Sub DatosArticulosDC()
' macroIndicadores Macro
' Macro creada el 06/04/2009 por Toby
'
Dim indica As New clsws_Servicios
Dim oFullNodeList As MSXML2.IXMLDOMNodeList
Dim oFilteredNodeList As MSXML2.IXMLDOMNodeList
Dim oNode As MSXML2.IXMLDOMNode
Dim xdd As MSXML2.DOMDocument30
Dim xdlRows As MSXML2.IXMLDOMNodeList
Dim iRow As Integer
Dim valor As String
Dim lcntRows As Integer
Dim Usuario As String 'uf
Dim Contraseña As String ' usd
Dim Articulo As String 'euro
Set oFullNodeList = indica.wsm_obtenerDatosIdArticulo()
Set oFilteredNodeList = oFullNodeList.Item(1).selectNodes("NewDataSet")
Set xdd = New MSXML2.DOMDocument30
With xdd
.async = False
.preserveWhiteSpace = True
.LoadXml oFullNodeList.Item(1).XML
Set xdlRows = xdd.selectNodes("//DatosArticulos")
End With
lcntRows = xdlRows.Length - 1
For Each oNode In oFilteredNodeList
For iRow = 0 To lcntRows
Usuario = oNode.childNodes.Item(iRow).selectSingleNode("grupo.valor").Text
Contraseña = oNode.childNodes.Item(iRow).selectSingleNode("Gaoma.valor").Text
Articulo = oNode.childNodes.Item(iRow).selectSingleNode("92274A.valor").Text
Next
Next
Hoja1.Cells(2, 2) = "DatosArticulos DC Mayoristas"
Hoja1.Cells(4, 2) = "Usuario"
Hoja1.Cells(5, 2) = "Contraseña"
Hoja1.Cells(6, 2) = "Articulo"
Hoja1.Cells(4, 3) = Usuario
Hoja1.Cells(5, 3) = Contraseña
Hoja1.Cells(6, 3) = Articulo
End Sub
espero me puedas indicar que me hace falta. gracias por todo
hola necesito consumir este web service desde excel 2010 pero no encuentro la forma
ResponderEliminar