前提・実現したいこと
VBA初心者で、いろいろ試してはいるのですが、
なかなか上手くいかず、苦戦しています。
所々、気になる部分もあるかと思いますが、
知恵を貸してくださると幸いです。
実現したいことは「VBAでIEを操作する」です。
①ログインを行う
②シートの文字列を検索し、実行
③検索結果をExcelに記入
④繰り返す
といった感じです。
発生している問題・エラーメッセージ
ログインまでは問題なく動いていますが、
検索の過程でつまずいているのが現状です。
その為、まずは検索できることを目標としたいです。
実行時エラー オートメーションエラーです。 エラーを特定できません。
該当のソースコード
VBA
1Sub IE操作() 2 3'定数の定義 4Const URL = "URL" 5Const FIRST_ROW_NUM = 2 6 7 'IEオブジェクト生成 8 Dim objIE As InternetExplorer 9 Set objIE = New InternetExplorer 10 11 'IEを表示 12 objIE.Visible = True 13 objIE.navigate URL 14 15 'IE待機 16 Call waitIE(objIE) 17 18 'HTMLオブジェクト生成 19 Dim htmlDoc As HTMLDocument 20 Set htmlDoc = objIE.document 21 22 'ログイン処理 23 With htmlDoc 24 25 'IDとPassを入力 26 .getElementById("username").Value = "ID" 27 .getElementById("password").Value = "Pass" 28 29 'ログインボタンはIDを持たないため、クラスから指定する 30 For Each Button In objIE.document.getElementsByClassName("button") 31 If Button.Value = "ログイン" Then 32 Button.Click 33 Exit For 34 End If 35 Next 36 End With 37 38 '待機 39 Call waitIE(objIE) 40 41 Set objIE = Nothing 42 Set objIE = CreateObject("internetexplorer.application") 43 44 'HTMLオブジェクト破棄 45 Set htmlDoc = Nothing 46 47 '新しく表示されたページのHTMLオブジェクト取得 48 Set htmlDoc = objIE.document 49 50 '待機 51 Call waitIE(objIE) 52 53 Dim condition As Boolean 54 condition = True 55 Dim i As Integer 56 i = FIRST_ROW_NUM 57 58 Do While condition 59 60 '文字列をExcelから取得 61 Dim src 62 src = Cells(i, 1) 63 64 '検索実行 65 With htmlDoc 66 Dim ser As IHTMLInputTextElement 67 Set ser = htmlDoc.getElementById("SearchInput")(0) 68 ser.Value = src 69 .getElementById("SearchButton").Click 70 End With 71 72 'IE待機 73 Call waitIE(objIE) 74 75 '結果を取得 76 77 '完了をセルに記載する 78 79 Loop 80 81 'IEを閉じる 82 objIE.Quit 83 Set objIE = Nothing 84 85End Sub 86 87Function waitIE(ByRef objIE As Object) 88 89 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE 90 DoEvents 91 Loop 92 93End Function
試したこと
With htmlDoc .getElementById("SearchInput").Value = "Test" .getElementById("SearchButton").Click End With
当初は、検索を実行させる際、こちらのコードで実行させました。
しかし、IDは合ってるはずなのですが、なぜか入力されません。
この時のエラーメッセージは
オブジェクト変数またはWithブロック変数が指定されていません。
となっていました。
補足情報(FW/ツールのバージョンなど)
Imacorossを使ってIDを調べてみました。
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:SearchForm ATTR=ID:SearchInput CONTENT=Test TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:SearchForm ATTR=ID:SearchButton
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/22 09:05 編集
2019/12/22 09:14
2019/12/22 09:33
2019/12/22 22:57
2019/12/24 02:00
2019/12/24 02:39
2019/12/24 07:49
2019/12/24 08:00 編集
2019/12/25 01:13