2014年3月17日月曜日

クリップボードにコピーする : ExcelからFirefox自動制御(13)

【はじめに】

SeleniumVBAを用いて、VBA (ExcelやWordなど) からFirefoxを自動制御する方法のサンプルコードを掲載しています。

動作対象は、SeleniumVBAの仕様に準じ、Microsoft Office2003 - 2013、Firefox Ver.8以降です。
(手元では、SeleniumVBA  v1.0.18.0 に、Windows7 + Firefox27.0.1, Windows8.1 + Firefox27.0.1の組み合わせで動作確認しています。)

サンプルコードは、SeleniumWrapper Type Library を参照設定すれば、コピー&ペーストで動作するように作成しています。

【サンプルコード】

Sub StartFirefox()
    Dim driver As New SeleniumWrapper.WebDriver
    driver.Start "firefox", "http://www.google.com/"
    driver.get "/"
    driver.findElementByName("q").SendKeys ("さばの味噌煮")
    driver.findElementByName("btnK").Click
   
    Call driver.waitForTextPresent("に関連する検索キーワード")
    Call driver.toClipBoard(driver.findElementByTagName("body").text)
End Sub

【サンプルコードの解説】

Googleのページを開き、「さばの味噌煮」で検索し、検索結果のページの本文(BODYタグ内のテキスト)をクリップボードにコピーします。

検索結果が全て表示されるのを待つために、waitForTextPresentメソッドで、検索結果のページ最下部に表示される「に関連する検索キーワード」という文字列が見つかるまで待機しています。

クリップボードへのコピーは、toClipBoardメソッドを用います。第1引数に、コピーしたい文字列を指定します。

ここでは、findElementByTagNameメソッドでbodyタグの要素(WebElementクラスのインスタンス)を取得し、Textプロパティで全文を取得しています。