[英]Excel 2010 replacing WEBSERVICE() with VBA
我有一個電子表格,將USD轉換為EURO。
我使用Excel 2013設計它,並使用新功能WEBSERVICE從Internet,API此處檢索歷史匯率:
http://api.fixer.io/2017-01-07?base=USD&symbols=EUR
我的公式如下所示:
=IF(OFFSET(INDIRECT("R[0]C",),0,-2)<>"",SUBSTITUTE(MID(WEBSERVICE("http://api.fixer.io/"&TEXT(EOMONTH(OFFSET(INDIRECT("R[0]C",),0,-2),0),"yyyy-mm-dd")&"?base=USD&symbols=CNY"),50,6),"}",""),"")
說明:如果當前單元格左側的第二個單元格不為空,則用Web數據填充它。 公式中的參數是月份結束日期,也由此表中的單元格計算。
該表有多行,對我們來說這是完美的工作,唯一的問題是某些用戶仍在使用Excel 2010或更早版本,是否可以在VBA中執行此操作?
等效的VBA WEBSERVICE
的最簡單版本是:
Public Function myWEBSERVICE(strURL As String) As String
Dim oWinHttp As Object
Set oWinHttp = CreateObject("MSXML2.XMLHTTP")
oWinHttp.Open "GET", strURL, False
oWinHttp.send ""
myWEBSERVICE = oWinHttp.ResponseText
End Function
用作UDF(用戶定義函數)作為單元格公式,例如:
=mywebservice("http://api.fixer.io/"&TEXT(A1,"yyyy-mm-dd")&"?base=USD&symbols=CNY")
其中A1
包含一個日期。
有關參考,請參見responseText屬性(IXMLHTTPRequest) 。 JScript中提供了示例,必須將其轉換為VBA。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.