Звоните веб-сервис в Excel - PullRequest
       42

Звоните веб-сервис в Excel

25 голосов
/ 24 января 2009

В модуле VBA в Excel 2007 можно ли вызвать веб-службу? Если да, то какие-нибудь фрагменты кода? Как добавить веб-ссылку?

Ответы [ 4 ]

23 голосов
/ 24 января 2009

Да, Вы можете!

Я работал над проектом, который сделал это (см. Комментарий). К сожалению, нет примеров кода из этого, но поиск в Google показал следующее:

Как вы можете интегрировать данные из нескольких веб-сервисов, используя Excel и VBA

ШАГ ЗА ШАГОМ: Использование веб-сервисов через VBA (Excel или Word)

VBA: использование веб-служб Soap

6 голосов
/ 30 января 2010
3 голосов
/ 25 июня 2012

Для получения обновленного ответа см. Этот вопрос:

вызов веб-службы с использованием кода VBA в Excel 2010

Хотя оба потока должны быть объединены.

1 голос
/ 14 сентября 2015

В Microsoft Excel Office 2007 попробуйте установить плагин «Справочник по веб-сервисам». И используйте WSDL и добавьте веб-сервисы. И используйте следующий код в модуле для получения необходимых данных из веб-сервиса.

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
...