Pergunta

Em um módulo VBA no Excel 2007, é possível chamar um serviço web? Se assim for, quaisquer trechos de código? Como eu gostaria de acrescentar a referência da web?

Foi útil?

Solução

Sim, você pode!

Eu trabalhei em um projeto que fez isso (comentário Ver). Infelizmente, há exemplos de código de que um, mas googling revelou estes:

Como você pode integrar dados de vários serviços da Web usando o Excel e VBA

PASSO A PASSO: Consumir web Services através de VBA (Excel ou Word)

VBA: Consumir Soap Web Services

Outras dicas

Aqui está um resumo de MS:

Consumir Web Services em Excel 2007

Para uma resposta atualizados ver esta pergunta SO:

chamar o serviço web usando o código VBA no Excel 2010

Os dois tópicos devem ser mesclados embora.

Em Microsoft Excel Office 2007 instalação try "Web Service ferramenta de referência" plugin. E usar o WSDL e adicionar os web-services. Ea utilização seguinte código no módulo para buscar os dados necessários do serviço 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top