2016-10-02 9 views
0

Internet Explorerから値を読み取り、Excelワークシートに書き込もうとしています。コードをきれいに保つために、私は別の手順でコードの特定の部分を持っていたいと思います。私はIE.documentを参照するのに苦労しています。IE.documentをVBAの別のSubから参照する方法

Sub OpenAndWriteIn() 

     Set IE = CreateObject("InternetExplorer.Application") 
     With IE 
      .Visible = True 
      .navigate "http://www.huffingtonpost.com" 
     End With 

     'Write in the Values to Sheet 
     ActiveSheet.Range("A1") = IE.document.getElementsByClassName("card__link")(0) 
     ActiveSheet.Range("B1") = IE.document.getElementsByClassName("card__link")(1) 

     MsgBox "Finished" 
     IE.Quit 

End Sub 

これは私が取得したいものですが、それは動作しません:

Sub OpenIE() 

     Set IE = CreateObject("InternetExplorer.Application") 
     With IE 
      .navigate "http://www.huffingtonpost.com" 
     End With 

     'Based on the SearchedValue make a decision 
     WriteIn IE 
     IE.Quit 

End Sub 

Sub WriteIn(IE As Object) 

    ActiveSheet.Range("A1") = IE.document.getElementsByClassName("card__link")(0) 
    ActiveSheet.Range("B1") = IE.document.getElementsByClassName("card__link")(1) 

    MsgBox "Finished" 

End Sub 
ここ

は、私は(レディ状態は、この例ではingnoredされる)が機能しているかの簡単な例であります

答えて

0

次の定義

Sub WriteIn(IE) or Sub WriteIn(IE as variant) 
+0

両方とも、多くのおかげで働いた! – gastan

0

の一つの方法の定義としてみてくださいはByRefパラメータを使用します。 ByRefがデフォルトであるため、ByRef/ByValを省略した場合は、ByRefが使用されます。この場合、メソッドOpenIE()の変数IEの宣言は、その型を含むパラメータ宣言と一致しなければなりません。単にByRefパラメーターが引数を参照するため、型は一貫していなければなりません。

だから、どちらかの問題を解決することができObjectまたはVariantのどちらかとの両方を宣言すること(ただし、混合してはならない)、または単に機能Sub WriteIn(ByVal IE As Object)ByValを使用しています。 ByValを指定すると、引数には引数の値が保持されます。

関連する問題