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