programing

Excel에서 웹 서비스

lovejava 2023. 4. 29. 08:08

Excel에서 웹 서비스

엑셀 2007의 VBA 모듈에서 웹 서비스를 호출할 수 있습니까?그렇다면 코드 스니펫이 있습니까?웹 참조를 어떻게 추가합니까?

네, 할 수 있어요!

저는 그것을 한 프로젝트에서 일했습니다(댓글 참조).안타깝게도 코드 샘플은 없지만 구글링은 다음과 같은 사실을 밝혀냈습니다.

Excel 및 VBA를 사용하여 여러 웹 서비스의 데이터를 통합하는 방법

단계별: VBA(Excel 또는 Word)를 통한 웹 서비스 소비

VBA: 비누 웹 서비스 소비

다음은 MS의 개요입니다.

Excel 2007에서 웹 서비스 사용

업데이트된 답변은 다음 SO 질문을 참조하십시오.

Excel 2010의 VBA 코드를 사용하여 웹 서비스 호출

그러나 두 스레드는 병합되어야 합니다.

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

Excel 2013 웹 서비스에서 데이터 읽기를 수행하고 원하는 것을 얻을 수 있을 때까지 JSON을 무시합니다(JSON은 항상 동일한 형식일 것입니다).

이 코드는 플러그인 없이 작동해야 합니다.

하지만 환전소 웹사이트에서 무료 API 키가 필요합니다.

나는 그것을 사용하여 USD 대 GBP 값을 내 시트의 셀에 로드했습니다.

Option Explicit

Sub Test_LateBinding()

    Dim objRequest As Object
    Dim strUrl As String
    Dim blnAsync As Boolean
    Dim strResponse As String

    Set objRequest = CreateObject("MSXML2.XMLHTTP")
    strUrl = "https://free.currconv.com/api/v7/convert?q=USD_GBP&compact=ultra&apiKey=[MY_API_KEY]"
    blnAsync = True

    With objRequest
        .Open "GET", strUrl, blnAsync
        .SetRequestHeader "Content-Type", "application/json"
        .Send
        While objRequest.readyState <> 4
            DoEvents
        Wend
        strResponse = .responsetext
    End With
    
    Dim responseArray() As String
    responseArray = Split(strResponse, ":", -1)
    
    Dim value As String
    value = responseArray(1)
    
    Dim valueArray() As String
    valueArray = Split(value, "}", -1)
    
    Dim finalValue As String
    finalValue = valueArray(0)
    
    Sheet2.Cells(22, "C") = finalValue
End Sub

언급URL : https://stackoverflow.com/questions/474936/call-web-service-in-excel