三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


広告:


[記事一覧、バックナンバーを見る]

QA0914 VBAでIE操作 送信後Web上の変換結果をDocumentから取り出す

処理のポイントは

試行錯誤の動画 http://www.youtube.com/watch?v=fIOvk13M2EM

嫌いな人が多いけど、
結果を待つために5秒、下記のように無条件に空ループで待ちました。

Wait_Time = DateAdd("s", 5, Now()) '5秒後を DateAddで計算
Do While Now() < Wait_Time '現在時刻が↑より小さい間 バカみたいに空回り(時間待ち)
DoEvents
Loop

で、結果を待ったら、あとはセットなので、単純に

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

で、値をセットしました。

こんな感じの、泥縄式の組み方で、組んでみました。

5秒待ちで逃げたり、プロからはお叱りを受けるサンプルですが、何かの参考となれば、幸いです。

質問内容と簡単な解説は http://ken3-info.blog.ocn.ne.jp/objie/2009/09/qa0914_document.html を見て笑ってください。

Option Explicit

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

Sub ie_test_ko()

'IEの起動
    Dim objIE As InternetExplorer '変数を定義します。
    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 999
        If Trim(Cells(yCNT, 1)) = "" Then Exit For 'A列が空白だったらループを抜ける
        
        '処理したいページを表示します。
        objIE.Navigate "http://translation.infoseek.co.jp/?ac=Text&lng=ko"  '.Navigate メソッドで表示する。
    
        'ページの表示完了を待ちます。
        While objIE.ReadyState <> READYSTATE_COMPLETE 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
        '↑ホントはShell関数とexplorer.exeでIEが完全に起動するまで待ちたいんだけどなぁ・・・
        '※三流コードサンプルからアレンジして 良いコードを作ってくださいね。
    
    '翻訳の結果を 表示完了を待ちます。
        While objIE.ReadyState <> READYSTATE_COMPLETE 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

質問内容と簡単な解説は http://ken3-info.blog.ocn.ne.jp/objie/2009/09/qa0914_document.html を見て笑ってください。




三流君へ メッセージを送る

全ての質問に答えることはできませんが、
ダメもとで、気軽に質問、感想、メッセージを送ってくださいね・・・

感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)
例:[XXXXさんへ回答例]←みたいに回答していたり...


Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)