RubyからWin32OLEを操作する1
RubyからWin32OLWが操作できるのは知っていたが、あまり情報がない。
なにげなくWebで検索していたら、Ruby Magazine(るびま)に連載があった。
第1回 http://jp.rubyist.net/magazine/?0003-Win32OLE
第2回 http://jp.rubyist.net/magazine/?0004-Win32OLE
ここの記事からおいしい部分だけを簡単にまとめると…
第1回の記事内にあった、「Internet Explorerを立ち上げ'Ruby'を検索する」のYahoo!版
require 'win32ole' ie = WIN32OLE.new('InternetExplorer.Application') ie.navigate("http://www.yahoo.co.jp") #ie.navigate("http://www.google.co.jp") ie.visible = true while ie.busy sleep 1 end q = ie.document.all.item("p") # 「検索」テキストボックスを取得 <input name="p" ... q.value = "ruby" # 値を入れる button = ie.document.all.item("search") # 「検索」ボタンを取得 <input name="search" ... button.click # ボタンをクリック!
本家には説明がないので、簡単に解説を加えると、
・ie = WIN32OLE.new('InternetExplorer.Application') でCOMを取得
・ie.document.all.item("p") で「検索」のテキストボックスオブジェクトを取得。
"p"はテキストボックスの名前。
・ie.document.all.item("search") で「検索」ボタンを取得。
"search"はボタンの名前。
ここで重要なのは、1番目のCOMを取得の部分。
COMを取得するには、WIN32OLE.new()するのだが、WIN32OLE.new()の引数にはProgIDを指定するのだそうだ。
ProgIDって、たしかCLSIDとか言われていたCOMを識別する128bitの値のことだと思った。
別名で文字列もあるので、IEの場合 'InternetExplorer.Application' で指定できる。
他のは本家を見てくれ。
それで問題になるのは ProgID の調べ方な訳で、やり方は2つあるみたい。
1. Rubyのみを使った場合
これは本家をみてくれ
2. オブジェクトブラウザを使った場合
MS Officeならば、例えばMS Excelの場合、
メニューの 「ツール→マクロ→Visual Basic Editor」 (あるいは Alt+F11) でVBEditorを起動して、
メニューの 「表示→オブジェクトブラウザ」(あるいは F2)というのがある。
Visal Studioを持っているなら、メニューの「ツール→OLE/COM オブジェクト ビューア」
がいいと思う。
第2回のパクリまとめは次回。