Excel에서 웹 서비스
엑셀 2007의 VBA 모듈에서 웹 서비스를 호출할 수 있습니까?그렇다면 코드 스니펫이 있습니까?웹 참조를 어떻게 추가합니까?
네, 할 수 있어요!
저는 그것을 한 프로젝트에서 일했습니다(댓글 참조).안타깝게도 코드 샘플은 없지만 구글링은 다음과 같은 사실을 밝혀냈습니다.
Excel 및 VBA를 사용하여 여러 웹 서비스의 데이터를 통합하는 방법
단계별: VBA(Excel 또는 Word)를 통한 웹 서비스 소비
다음은 MS의 개요입니다.
업데이트된 답변은 다음 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
'programing' 카테고리의 다른 글
배치 파일 내부에 파일이 있는지 확인하는 방법 (0) | 2023.04.29 |
---|---|
HRESULT에서 예외: 0x800A03EC 오류 (0) | 2023.04.29 |
"리소스가 파일 시스템과 동기화되지 않음" 방지 (0) | 2023.04.29 |
Bash에서 변수에 새 줄을 삽입하려고 합니다. (0) | 2023.04.29 |
명령줄을 사용하여 디렉토리 및 해당 파일 삭제, 존재하지 않는 경우 오류 발생 안 함 (0) | 2023.04.29 |