簡體   English   中英

Excel 2010用VBA替換WEBSERVICE()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM