ttp://www.vba-ie.net/form/submit.htmlを参考に、検索対象を「ttp://gihyo.jp」に変更し、以下のコードを実行してみました。
しかし、「田中太郎」とフォームに入力はされ、検索ボタンが押されず、「オブジェクトが必要です」というメッセージが出る状態です。
objForm.submitで検索されないのは何故でしょうか?
稚拙な質問で大変申し訳御座いません。
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If
Sub sample()
Dim objIE As InternetExplorer
Dim objForm As HTMLFormElement
'InternetExplorerでテスト用フォームページを起動
Call ieView(objIE, "http://gihyo.jp")
'名前のテキストボックスにデータを入力
Call formText(objIE, "query", "田中太郎")
'パスワードボックスにデータを入力
'Call formText(objIE, "pass", "1234")
'テキストエリアにデータを入力
'Call formText(objIE, "textbox", "さわやかです。")
Set objForm = objIE.document.forms("form1")
'submitボタンをクリック
objForm.submit
End Sub
Sub ieView(objIE As InternetExplorer, _
urlName As String, _
Optional viewFlg As Boolean = True)
'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")
'IE(InternetExplorer)を表示・非表示
objIE.Visible = viewFlg
'指定したURLのページを表示する
objIE.navigate urlName
'IEが完全表示されるまで待機
Call ieCheck(objIE)
End Sub
Sub ieCheck(objIE As InternetExplorer)
Dim timeOut As Date
'完全にページが表示されるまで待機する
timeOut = Now + TimeSerial(0, 0, 20)
Do While objIE.Busy = True Or objIE.readyState <> 4
DoEvents
Sleep 1
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop
timeOut = Now + TimeSerial(0, 0, 20)
Do While objIE.document.readyState <> "complete"
DoEvents
Sleep 1
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop
End Sub
Sub formText(objIE As InternetExplorer, _
nameValue As String, _
tagValue As String)
'テキストボックス・パスワードボックスにデータを入力
For Each objTag In objIE.document.getElementsByTagName("input")
If objTag.Name = nameValue Then
objTag.Value = tagValue
Exit For
End If
Next
'テキストエリアにデータを入力
For Each objTag In objIE.document.getElementsByTagName("textarea")
If objTag.Name = nameValue Then
objTag.Value = tagValue
Exit For
End If
Next
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは
>「オブジェクトが必要です」というメッセージが出る状態です。
それってエラーメッセージですよね?
想像するところ、エラーの発生個所は
>Set objForm = objIE.document.forms("form1")
ではないかと思いますが、該当するフォーム要素が取得できていないだけではないでしょうか?
VBAなばら、エディタにデバッグツールがあると思いますので、それを利用することで詳細な内容を確認できることと思います。
ご提示のページをざっと眺めたところformは以下の3箇所のようですが、
・nameやid属性のないform(右上のもの)
・class="inputForm01"となっているform
・name、idが"informationForm"となっているform
これらのいずれもコードでご指定のformには該当しません。
docuemnt.formsやgetElementById()、getElementsByTagName()、querySelector()などが利用可能と思いますので、これらを利用して処理なさりたいフォーム要素を適切に取得してあげれば良いだけのように思います。
※ ついでながら、ご提示のコードでは、テキストをセットする際に、指定したフォームとは無関係に文書全体から入力要素を探してセットするようになっていますので、似たようなフォームが複数あるページではどのフォームに値がセットされるか不明確になっていると言えます。
対象とするフォーム要素を取得できれば、その子要素(入力要素)は、form.elementsで取得可能ですので、そのなかから探すようにした方が良さそうに感じられます。
あるいは、querySelectorなどで直接指定するのが良いのかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
入力フォームの値をQRコードで...
-
初歩的な事だと思います。 Sub...
-
c#でTextBoxの入力制限
-
TextBoxから数字が文字...
-
VBAで質問があります
-
VBAでInputBoxの再入力をさせる...
-
Vba テキストボックスでボック...
-
ExcelVBA No.を自動連番で設定...
-
TextBoxに特定の文字のみ入力を...
-
数字以外の入力をエラーにする...
-
VBAの質問になります メッセー...
-
accessで該当するレコードがな...
-
SQL で数値フィールドにDBNULL...
-
arrows we
-
phpMyAdmin/テーブル作成エラー...
-
携帯サイト作成 半角数字(半角...
-
EXCEL VBA で指定した範囲に入...
-
Java 変数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
VBAで質問があります
-
Windowsのアプリ開発ってなんの...
-
Excel-VBAでInputBox+Pulldown...
-
EXCEL VBA で指定した範囲に入...
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
VBAでInputBoxの再入力をさせる...
-
入力フォームの値をQRコードで...
-
excel vba でユーザーフォーム...
-
TextBoxから数字が文字...
-
VBAの質問になります メッセー...
-
DataGridViewの桁数制限に関して
-
accessで該当するレコードがな...
-
c#でTextBoxの入力制限
-
VBA R1C1形式で変数の入力について
-
エディットボックスの入力制限...
-
「イ分」・・・フンという文字...
-
アルファベットGの小文字の入力
おすすめ情報