ここから本文です

エクセルVBA処理が不安定です。

sam********さん

2018/1/917:45:03

エクセルVBA処理が不安定です。

誰か教えてください

エクセルVBAでIEを操作してホームページにとび
枠内にデータを入力するまではうまくいくのですが

最後の再生ボタンを押すというところで
動いたり、動かなかったりします

素人同然です
下記も、昔、教えてもらったものを少し改良しただけで
原因なんて全く分からない状態です
誰かアドバイスをよろしくお願いいたします

~略~

'IEの起動、可視化、URLへ接続
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "https://translate.weblio.jp/"

'表示終了待ち
Do
DoEvents
Loop Until (ie.Busy = False) And (ie.ReadyState = 4)

'英単語入力
adr = msg
Application.Wait [Now() + "00:00:02"]
Set mapnow7 = ie.document.getElementByID("originalTextArea")
mapnow7.Value = adr

Set ev7 = ie.document.createEvent("HTMLEvents")
ev7.initEvent "change", True, True
mapnow7.dispatchEvent (ev7)

'再生ボタンを押す
Set mapnow4 = ie.document.getElementByID("contHyBtnTAPlE")
mapnow4.Click

Set ev4 = ie.document.createEvent("HTMLEvents")
ev4.initEvent "change", True, True
mapnow4.dispatchEvent (ev4)

End Sub

閲覧数:
408
回答数:
4
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

con********さん

2018/1/921:07:50

Private Sub WaitIE()
Do
DoEvents
Loop Until (ie.Busy = False) And (ie.ReadyState = 4)
End Sub

として、IEに何かするたびにこれを呼び出すようにした方がよいですよ。

質問した人からのコメント

2018/1/11 00:26:44

これを付け加えるだけで、今のところ全くエラーが出ておりません。
こんな、簡単な方法で解決できるとは思いませんでした。
本当に有難うございました。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

y_h********さん

2018/1/1000:55:42

どうもエセプログラマーです。
VBAからIEを操作ですが、
CreateObject("InternetExplorer.Application")
でIEを起動し、
ie.navigate で操作したいサイトに飛ぶ方法ですが、

.Busy = False をいれてみたり
.ReadyState = 4 をいれてみたり
Sleep や Application.Wait をいれてみたり等
ネットには載っているかもしれませんが、

実際は各メソッドの説明通りには動きません。
ページ読み込まれてないのに、
読み込まれたと判定され、
ボタン等オブジェクトがまだ生成される前に
参照・操作しようとすることで、エラーが発生します。

今回のソースに限りですが、
Document.getElementByID で id に入っている値でオブジェクトを
指定できるページのようなので、
各 Id である
originalTextArea と contHyBtnTAPlE が
ページ上に絶対にある前提として、

'英単語入力 と '再生ボタンを押す 部分を
ブロック分けし、
1回ごとにApplication.Wait で1秒ずつWaitをかけてつつdoeventを入れて
エラー処理でエラーが発生したら
1秒後にもう一回
とゆう風にWaitも含めて数回リトライさせてみてはどうでしょう?

ina********さん

2018/1/920:06:24

'再生ボタンを押す
の前にも「待ち」を入れてみたらどうでしょうか。

Do
DoEvents
Loop Until (ie.Busy = False) And (ie.ReadyState = 4)

oss********さん

2018/1/917:48:34

VBAが不安定なんじゃなくてIEかそのサイトが不安定なんじゃないの?
一度他のPCでチェックしてみたら?

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる