MatsuLingさんのブログ

最新一覧へ

« 前へ26件目 / 全169件次へ »
ブログ

Excel VBAの再勉強記録 No.002

VBAでIE(InternetExplorer.Application)を操作する方法

VBAで(ExcelやAccessなどから)InternetExplorer WebBrowserを操作する方法を紹介します。

  Set objIE = CreateObject("InternetExplorer.application")でVBAからIE操作します・・・

三流君objIE解説 http://ken3-info.blog.ocn.ne.jp/objie/archives.html


Option Explicit

'IEを使い 英単語を変換する
'A5から 単語を 変換サイトへ渡す(セットする)
'表示された変換結果を受け取り 隣のB5~セットする
'A列のデータが終了するまで、翻訳サイトにデータセット、結果をB列にセットを繰り返す。

Sub ie_test_e()

'IEの起動
Dim objIE As Object '変数を定義します。
Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
objIE.Visible = True '可視、Trueで見えるようにします。

'表示位置(左上の座標)とサイズ(高さ・幅)を調整する
objIE.Top = 100 '左上 上位置
objIE.Left = 100 '左上 左位置


'変換元の日本語が無くなるまでループ
Dim Wait_Time As Date '秒数を計算するため
Dim yCNT As Integer '行数

For yCNT = 5 To 99 '5行目から最大99行目まで
If Trim(Cells(yCNT, 1)) = "" Then Exit For 'A列が空白だったらループを抜ける

'処理したいページを表示します。ここでは翻訳ページ
objIE.Navigate "http://translation.infoseek.co.jp/?ac=Text&lng=en" '.Navigate メソッドで表示する。

'↑の起動待ち↓ 5秒間、待ってみた。
Wait_Time = DateAdd("s", 5, Now()) '5秒後を DateAddで計算
Do While Now() < Wait_Time '現在時刻が↑より小さい間 バカみたいに空回り(時間待ち)
DoEvents
Loop
'※三流コードサンプルからアレンジして 良いコードを作ってくださいね。

'ページの表示完了を待ちます。
While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
DoEvents '重いので嫌いな人居るけど。
Wend

'ページが表示されたので、表示された文章に対して、処理を行います。

objIE.Document.all("origin_doc").Value = Cells(yCNT, 1) 'A列の値を渡す
'objIE.Document.all("selector_1").Checked = True '日本語--英語 逆の時
objIE.Document.all("submit").Click '翻訳ボタンを押す

'↑の起動待ち↓なんか、止まった感じがしてイヤなんだけど。。。
Wait_Time = DateAdd("s", 5, Now()) '5秒後を DateAddで計算
Do While Now() < Wait_Time '現在時刻が↑より小さい間 バカみたいに空回り(時間待ち)
DoEvents
Loop
'※三流コードサンプルからアレンジして 良いコードを作ってくださいね。

'翻訳の結果を 表示完了を待ちます。
While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
DoEvents '重いので嫌いな人居るけど。
Wend

'結果のエリア converted を 取り出し、隣のB列にセット
Cells(yCNT, 2) = objIE.Document.all("converted").Value

Next yCNT

'処理が終わったので、IEを閉じます。
objIE.Quit '.Quitで閉じる
Set objIE = Nothing '使用したオブジェクト変数もキレイにしてね。

End Sub
コメントを書く
コメントを投稿するには、ログイン(無料会員登録)が必要です。