2015年6月28日日曜日

EXCEL+VBAで仕事を効率化〜既に開いているIEページをつかまえる。InStr関数で確実に!

VBAでWebベースの社内システム(IEで開いたページ)からデータをEXCELのシートに取り込む場合、
・IEをイチから起動して、ページを巡回するか
・既に開いているIEページをつかむか
の2つの方法がある。
 前者の場合、社内システムへのログインからVBAコードを作ることになる。
 後者は、ログインとか、途中のページ遷移(メニュー画面)をスキップして、単純に必要なIEページのみ取り込む部分さえ、書けばよいので、手抜きコードのワタシにはピッタリである。
 とりあえず、開いているウィンドウを捕まえて、それがHTMLなら、IEで開いたページだ。
 さて、ここで、大切なのは、どうやって、必要なページと判断するか、である。
 例えば、ページのタイトルとか、ページに含まれる、特定の文字列を利用するといった具合にユニーク(唯一)なキーワードを選ぶのが、よい。そこで、便利なのがInStr関数だ。
 そこで、OKワード(これがあれば抽出)を指定するようにしてみた。
 そのコードは、こんな感じ。Instr 関数で、
Instr(objIE.document.innertext,"OK-word-1")> 0
とコーディングし、OKワードがあるかを判定する。
全体は、こんな感じだ。
Dim objIE as Object
Dim objShell as Object
Dim objWindow as Object
Set objIE = Nothing
Set objShell = CreateObject("Shell.Application")
For Each objWindow in objShell.Windows
  If TypeName(objWindow.document) = "HTMLDocument" Then
    Set objIE = objWindow
    Debug.Print objIE.Doucument.Title 
    If objIE.document.Title = "your-web-page-title-1"  Then Exit For
    If Instr(objIE.document.innertext,"OK-word-1")> 0 Then Exit For
  End If
Next 
 ここで一息のコーナー。
 日本の小さなワイナリーには、繊細で、素晴らしいワインがある。中にはそれほど高額ではないのに、独特な感じを持つ質の高いワインがある。ワタシが好きなのは、甲府、勝沼のハラモワインの「甲斐ノワール」。かすかに、ごぼうのような、土の匂いを感じる。しかし、とても人気があり、あまり手に入らなくなってきた。寂しい限りだ。そして、最近、見つけたのは、栃木のココ・ファームワイナリーの「農民ロッソ」。土の香りを感じるのは、ワタシだけかなぁ。