vbaでieを操作しようとしています。下記の「複数検索」ボタンをクリックしようと思っているのですが「実行時エラー 型が一致しません。」となり、クリックできません。どのように修正すれば良いのでしょうか?
お手数をおかけしますが、ご教授よろしくお願いします
・ソース
<div class="CSearch">
<a href="javascript:void(0);" data-bind="click: function(){$root.showSearch();}"
class="search1"><span>単一検索</span></a>
<span class="search2">複数検索</span>
</div>
・コード
Dim button As IHTMLInputElement
For Each button In htmlDoc.getElementsByTagName("div")
If InStr(button.className, "search2") > 0 Then
button.Click
Exit For
End If
Next
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No1です
>以上でエラーはなくなりましたが、クリックは出来ておりませんでした
どこまで意図通りに動作しているかをチェックしながら、原因を特定してゆくしかないでしょう。
例えば、目的のspan要素が取得できているのかは、
Debug.Print button.textContent
などとしてみて、「複数検索」が表示されるかで確認できる、といった塩梅です。
このようにして、どこが実際におかしいのかを特定して対応するのが、一見、遠回りに見えて近道かと思います。
span要素に対して、clickメソッドが存在するのかどうかも確かめておいたほうがよさそうです。
(大抵の場合はフォーム内の要素が対象なので、spanをclickしたことがありませんので)
一方で、ページのソースを見てみると、直接スクリプトが実行されるような記述にはなっていないようです。
ページ読み込み後に何らかの設定がなされているものと推測されますが、最終的にクリックで検索(?)が実行される仕組みは、どの様にして構成されているのでしょうか?
例えば、その設定がされる前にクリックしても何も起きないはずです。
あるいは、検索の対象となる語句などがどこかにあるかと思いますが、そちらに入力しなければ何も行われないのかも知れません。
そのあたりの仕組みにも合わせた処理にしておく必要がありそうに思います。
No.1
- 回答日時:
こんにちは
そもそもになってしまいますが、htmlDocは取得できているのでしょうか?
それ以降に関しては、
・「IHTMLInputElement」って見かけたことないけれど、正しいのかしら?
・getElementsByTagName("div")で得られることを期待できるのはDIV要素
なので、INPUT要素ではないはず
(このtype違いが、エラーの直接の原因なのかも?←未確認です。)
・HTMLソースを見ると、search2のクラス名を有しているのはspan要素の
ようなので、(多分)何も見つからずにループが終了するのが正常な処理。
あたりが怪しそうですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ヒトの神秘】美男美女から何...
-
含む含まないという概念自体の...
-
角丸画像の背景色を透明にした...
-
「諸要素」とはどういう意味で...
-
HTMLページ上でiframeを最前面...
-
NからZへの全単射を具体的に構...
-
input type="hidden"で取得した...
-
aの中にspan
-
メールアドレス(グループ)の...
-
html タグの閉じスラッシュ前の...
-
質問1.
-
「にはとって代わることのでき...
-
tdに対してmin-heightの定義、...
-
ホームページビルダー16の属...
-
VBA でIE 操作 ボタンをクリッ...
-
ヘッダのメニューバーを画面の...
-
自然数と偶数の自然数は全単射...
-
vb/vb.net XMLの大量データの作...
-
smallにtext-allignが効かない
-
テキストボックスの中にリンク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ヒトの神秘】美男美女から何...
-
smallにtext-allignが効かない
-
含む含まないという概念自体の...
-
質問1.
-
2個のFormを横並びにしたい
-
「諸要素」とはどういう意味で...
-
input type="hidden"で取得した...
-
NからZへの全単射を具体的に構...
-
角丸画像の背景色を透明にした...
-
改行ほどは行かないけど、若干...
-
マージソートの計算量について-...
-
親要素・子要素
-
border: noneでボタンの境界線...
-
C言語 並び替え(配列)について
-
tdに対してmin-heightの定義、...
-
HTMLでTextareaを横に2つ並べ...
-
テキストボックスの中にリンク...
-
CSSで改行後の行間調整
-
H1タグを画像にしたい
-
ある要素の中身を全部グレーア...
おすすめ情報
fujillin 様
迅速な回答ありがとうございます。
1)htmlDocは取得できているのでしょうか?
→前半部分を省略していたので追記致します。
下記のように記載しているので出来てると思っておりますがいかがでしょうか?
『Dim htmlDoc As HTMLDocument』
意味を履き違えていましたら申し訳ございません。
2)「IHTMLInputElement」は本に載っていたので使用しておりましたが、変えてみました。
3)etElementsByTagName("div")~span要素のようなので
→下記で「getElementsByTagName("span")」と変えてみました。
以上でエラーはなくなりましたが、クリックは出来ておりませんでした。(続きます)
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.Navigate "https://maru.maru"
Do While objIE.Busy = True Or objIE.readyState <> 4
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim button As IHTMLInputElement
For Each button In htmlDoc.getElementsByTagName("span")
If InStr(button.className, "search2") > 0 Then
button.Click
Exit For
End If
Next
文字数制限のため分割し見にくくなり申し訳ございません。