2016-09-26 14 views
0

目的様々な通貨の為替レートのデータでウェブサイトへのページで、ELEMENTIDを取得し、新しい配列

プルを取り込みます。

APPROACH

  1. はアクティブなシートを選択し、通貨ツー変換する(配列に例えば[ "EUR"、 "GBP"、 "USD"]
  2. ブラウザを開き、訪問をコピーします通貨換算サイト異なる通貨を介し
  3. ループと抽出通貨換算は、アレイに
  4. 追加の変換係数を係数
  5. 最新の変換がライン IE.Navigate "http://www.usforex.com/currency-converter/" & locals(i) & "/usd/1.00/false"について

CODE

Sub retreiveCurrencies() 

Dim ws As Worksheet 
Dim locals() As Variant 
Dim exchangeArray() As Variant 
Dim i As Long 
Dim IE As Object 


'Select currencies to convert 
Sheets("APPENDIX - CURRENCY CONVERTER").Activate 
locals = Array(ActiveSheet.Range("B2:B15")) 
'This should return locals = ["EUR", "GBP, "USD"] 

'Prep Internet Explorer 
Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = False 

Do While IE.Busy And Not IE.readyState = READYSTATE_COMPLETE 
    DoEvents 
Loop 

'Loop through currencies and retreive exchange rates. Paste rates into exchangeArray 
For i = LBound(locals()) To UBound(locals()) 
    IE.Navigate "http://www.usforex.com/currency-converter/" & locals(i) & "/usd/1.00/false" 
    exchange = IE.Document.GetElementById("converterToAmount").innerText 
    'exchangeArray = [] QUESTION: What should I add here to create an array of exchange rates? 
Next i 

'Paste exchange rate array into currency conversion column 
ActiveSheet.Range("D2:D15") = exchangeArray() 


End Sub 

質問/発行(S)

  1. を因子と3210
  2. 再作成は、私が "種類不一致" を受信優れ。 locals()をテキストに変換する必要がありますか?このコードでは、多くのエラーがあるかもしれません:。IE.Document.GetElementById("converterToAmount").innerTextを通じてIループ行い、新しい配列exchangeArray()

NOTEに取得した値を追加する方法

  • 私はVBAの初心者です、これはより複雑なスクリプトの私の試みです。

  • 答えて

    1

    問題は、この行される:これは、ActiveSheet.Range("B2:B15)からの値の配列を

    locals = Array(ActiveSheet.Range("B2:B15")) 
    

    作成されていない - それはそれで唯一の要素でRangeオブジェクトの配列を作成しています。これは、実際に不一致をスローするコード行でlocals(i)Rangeであることを意味します。 Rangeに複数のセルがあるため、デフォルトメンバー(.Value)は、Variantの2D配列を返します。これは文字列に連結することはできません。

    あなたは代わりにもっとこのようなものが必要:

    locals = ActiveSheet.Range("B2:B15").Value 
    
    '... 
    
    'Loop through currencies and retreive exchange 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" 
        exchange = ie.document.getElementById("converterToAmount").innerText 
        'exchangeArray = [] QUESTION: What should I add here to create an array of exchange rates? 
    Next i 
    
    +0

    ありがとうございました。しかし、私は今、 "IE.Navigate" http://www.usforex.com/currency-converter/ "&locals(i)&" /usd/1.00/false ""行に "subscript out of range"を受け取っています。 これがURLパラメータにどのように影響するかわからない – jonplaca

    +0

    @kidlogic Ooops - その行を2Dインデックスに変更するのを忘れました。編集を参照してください。 – Comintern

    +0

    私はVBAのスキルを拡張する必要があるように見えます。これは、エラーを投げないという問題を解決しました。しかし、I.Eはアレイの最後の値(「EUR」または「GBP」ではなく「USD」である)を引き込むだけである。私はこれを解決するためにさらに深く潜り込みます。ありがとうございました! EDIT:Do While IE.Busy ...ループを提案したForループ内で追加して解決しました。 – jonplaca

    関連する問題