2009-01-23 18 views
22

En un módulo VBA en excel 2007, ¿es posible llamar a un servicio web? Si es así, ¿algún fragmento de código? ¿Cómo agregaría la referencia web?Llamar al servicio web en excel

+1

Sé que es posible, porque una vez trabajé en un proyecto que lo hizo. Desafortunadamente, solo trabajé en la parte del servicio web y tenía demasiado en mi plato para poder explorar el código Excel. Trataré de averiguar cómo. Es posible. – Mostlyharmless

+0

Puede encontrar esto útil: http://stackoverflow.com/questions/3521876/calling-web-service-using-vba-code-in-excel-2010 – SAL

Respuesta

23

Sí Puede!

Trabajé en un proyecto que lo hizo (ver comentario). Lamentablemente no hay ejemplos de código de que uno, pero buscando en Google reveló los siguientes:

How you can integrate data from several Web services using Excel and VBA

STEP BY STEP: Consuming Web Services through VBA (Excel or Word)

VBA: Consume Soap Web Services

+3

Y en caso de que alguien se esté preguntando: No, esto no es así. t disponible en versiones de Excel razonablemente recientes. :( –

5

He aquí un resumen de EM:

Consuming Web Services in Excel 2007

+0

La pregunta no especifica qué versión de Excel se está utilizando. Sin embargo, VBA está en desuso en 2007 y su método es correcto. –

+6

@Justin Dearing: ¿Qué le hace decir que VBA está obsoleto en cualquier lugar ??? –

1

En Microsoft Excel Office 2007 intente instalar el complemento "Web Service Reference Tool". Y use WSDL y agregue los servicios web. Y use el siguiente código en el módulo para obtener los datos necesarios del servicio web.

Sub Demo() 
    Dim XDoc As MSXML2.DOMDocument 
    Dim xEmpDetails As MSXML2.IXMLDOMNode 
    Dim xParent As MSXML2.IXMLDOMNode 
    Dim xChild As MSXML2.IXMLDOMNode 
    Dim query As String 
    Dim Col, Row As Integer 
    Dim objWS As New clsws_GlobalWeather 

    Set XDoc = New MSXML2.DOMDocument 
    XDoc.async = False 
    XDoc.validateOnParse = False 
    query = objWS.wsm_GetCitiesByCountry("india") 

    If Not XDoc.LoadXML(query) Then 'strXML is the string with XML' 
     Err.Raise XDoc.parseError.ErrorCode, , XDoc.parseError.reason 
    End If 
    XDoc.LoadXML (query) 

    Set xEmpDetails = XDoc.DocumentElement 
    Set xParent = xEmpDetails.FirstChild 
    Worksheets("Sheet3").Cells(1, 1).Value = "Country" 
    Worksheets("Sheet3").Cells(1, 1).Interior.Color = RGB(65, 105, 225) 
    Worksheets("Sheet3").Cells(1, 2).Value = "City" 
    Worksheets("Sheet3").Cells(1, 2).Interior.Color = RGB(65, 105, 225) 
    Row = 2 
    Col = 1 
    For Each xParent In xEmpDetails.ChildNodes 
     For Each xChild In xParent.ChildNodes 
      Worksheets("Sheet3").Cells(Row, Col).Value = xChild.Text 
      Col = Col + 1 
     Next xChild 
     Row = Row + 1 
     Col = 1 
    Next xParent 
End Sub 
Cuestiones relacionadas