質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

2527閲覧

ステップインなら可能

bullet_shots

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/07/07 07:00

マクロ実行時における完全稼動

この様な手順で行いたい意向です。
マクロを実行すると出来なくて、ステップインだと出来る理由の教示依頼です。

【マクロ実行】
①IEから指定のページに飛ぶ
②ENTERを押す
③IDを入力する
④PASSを入力する
⑤ログインを押す

発生している問題・エラーメッセージ

エラーメッセージ ありませんが、③から動作しません。③の画面から止まったままです。 ### 該当のソースコード ```ここに言語名を入力 Dim objie As InternetExplorer Set objie = CreateObject("InternetExplorer.Application") objie.Visible = True objie.Navigate "https://www." Call IEWait(objie) Call WaitFor(3) Dim objEnter As Object For Each objEnter In objie.document.getElementsByTagName("a") If InStr(objEnter.outerHTML, "asp") > 0 Then objEnter.Click Call WaitFor(3) Exit For End If Next Dim idnumber As String Dim passnumber As String idnumber = "111" passnumber = "000" Dim objtag1 As Object Dim objtag2 As Object Dim objsubmit As Object For Each objtag1 In objie.document.getElementsByTagName("input") If InStr(objtag1.outerHTML, """text""") > 0 Then objtag1.Value = idnumber Call WaitFor(3) Exit For End If Next For Each objtag2 In objie.document.getElementsByTagName("input") If InStr(objtag2.outerHTML, """password""") > 0 Then objtag2.Value = passnumber Call WaitFor(3) Exit For End If Next For Each objsubmit In objie.document.getElementsByTagName("input") If InStr(objsubmit.outerHTML, """submit""") > 0 Then objsubmit.Click Call WaitFor(3) Exit For End If Next End Sub Function IEWait(ByRef objie As Object) Do While objie.Busy = True Or objie.readyState <> 4 DoEvents Loop End Function Function WaitFor(ByVal second As Integer) Dim futuretime As Date futuretime = DateAdd("s", second, Now) While Now < future DoEvents Wend End Function

試したこと

デバックでステップインしていくと、⑤まで全て完了できます。

補足情報(FW/ツールのバージョンなど)

上段、Navigate以降のアドレスに関しては社外秘内容なので、告知ができません。
告知が出来ない状態で、何故出来ないのかお伺いする事が心苦しいのですが、
何卒、お力添え頂けないでしょうか。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

IE待ち時間処理に以下を使用してみてください。

VBA

1Sub IEWait(ByRef ie As Object) 2 3 Dim timeout As Date 4 Dim cnt As Integer 5 6 timeout = DateAdd("s", 50, Now()) 7 Do 8 '下記ステータス連続30回一致 9 If ie.Busy = False And ie.readyState = 4 Then 'READYSTATE_COMPLETE = 4 10 DoEvents: DoEvents 11 cnt = cnt + 1 12 If cnt >= 30 Then 13 Exit Do 14 End If 15 End If 16 17 'タイムアウトチェック 18 If timeout < Now() Then Exit Sub 19 Loop 20 21 timeout = DateAdd("s", 10, Now()) 22 Do While ie.Document.readyState <> "complete" 23 DoEvents: DoEvents 24 If timeout < Now() Then Exit Do 25 Loop 26End Sub

投稿2019/07/07 08:32

編集2019/07/07 08:42
TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問