ЦЕЛЬObject Обязательный, несмотря на уже определяющий объект (EXCEL, VBA)
отъехать данные обменных курсов для различных валют.
ПОДХОД
- Выберите активный лист и копию валюты, чтобы быть преобразован в массив (например, [ "EUR", "GBP", "USD"]
- Открыть браузер и перейти конвертация валюты сайт преобразования
- Loop с помощью различных валют и извлекать факторы
- Append коэффициенты преобразования в массив
- заселить Excel с новейшей преобразования коэффициентов
HTML
<span class="amount" id="converterToAmount" style="">26.21</span>
КОД
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
вопросы/вопрос (ы)
- В настоящее время возникает ошибка «Требуемый объект» @
Set rates = IE.Document.GetElementById("converterToAmount").innerText
, несмотря на определениеDim rates As Object
. Любое решение? - Есть
ActiveSheet.Range("E2:E15") = exchangeArray()
достаточно, чтобы вставить клетки обратно в excel?
'rates' не должно быть объектом. Вы устанавливаете его для значения внутреннего текста элемента IE, который является строкой. Попробуйте определить его как String и оставьте ключевое слово 'Set'. – Dave
Я мог бы поклясться, что раньше это делал. Благодарим вас за решение этой проблемы. Однако, когда я называю «MsgBox exchangeArray (i)» после «ReDim», я не вижу никаких значений. Я что-то неправильно истолковываю? По какой-то причине ставки не вытягиваются и/или не сохраняются в exchangeArray – jonplaca
Я склонен определять целевой диапазон с экстентами варианта массива, например '.Range (« E2 »).Изменение размера (UBound (exchangeArray, 1), UBound (exchangeArray, 2)) = exchangeArray' – Jeeped