拉在各种货币汇率数据。
APPROACH
- 选择活动薄板和复制货币-待转换成一个阵列(例如[ “EUR”, “GBP”, “USD”]
- 打开浏览器和访问货币转换网站
- 遍历不同的货币,并提取货币换算系数
- 追加转换因子为一个数组
- 重新填充的excel用最新的变换因子
HTML
<span class="amount" id="converterToAmount" style="">26.21</span>
CODE
Sub retreiveCurrencies()
Dim ws As Worksheet
Dim locals() As Variant
Dim rates As Object
Dim exchangeArray() As Variant
Dim i As Long
Dim IE As Object
'Select currencies to convert
Sheets("APPENDIX - CURRENCY CONVERTER").Activate
locals = ActiveSheet.Range("B2:B15").Value
'This should return locals = ["EUR", "GBP, "USD"]
'Prep Internet Explorer
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
'Loop through currencies and retreive rates. Paste rates into exchangeArray
For i = LBound(locals, 1) To UBound(locals, 1)
IE.Navigate "http://www.usforex.com/currency-converter/" & locals(i, 1) & "/usd/1.00/false"
Do While IE.Busy And Not IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
'!!!!error on following line = "Object required"!!!!
Set rates = IE.Document.GetElementById("converterToAmount").innerText
ReDim Preserve exchangeArray(rates)
Next i
'Paste exchange rate array into currency conversion column
ActiveSheet.Range("E2:E15") = exchangeArray()
End Sub
问题/ ISSUE(S)
- 尽管定义了
Dim rates As Object
,但目前收到错误“Object Required”@Set rates = IE.Document.GetElementById("converterToAmount").innerText
。任何解决方案 - 是否
ActiveSheet.Range("E2:E15") = exchangeArray()
足以将细胞粘贴回excel?
'rates' should not be a object。您将它设置为IE元素的innertext文本的值,这是一个字符串。尝试将其定义为字符串并删除“Set”关键字。 – Dave
我可以发誓我以前做过这件事。谢谢你解决这个问题。 但是,当我在'ReDim'之后调用'MsgBox exchangeArray(i)'时,我没有看到任何值。我是否误解了某些内容?由于某些原因,费率未被拉到和/或保存到交换列表中 – jonplaca
我倾向于用变量数组的范围来定义目标范围,例如'.Range(“E2”)。Resize(UBound(exchangeArray,1),UBound(exchangeArray,2))= exchangeArray' – Jeeped