繁体   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