
【VBA】実行中に「型が一致しません」というエラーが発生します。
http://d.hatena.ne.jp/language_and_engineering/2 …
上記URLの中の『もっと楽にコーディングしたい』項のコードを実行すると、
getElementByIdの引数のところで、
「型が一致しません」
というエラーが発生します。
原因がわからないのでわかる方居らっしゃったらお答えいただければと思います。
環境は以下のとおりです。
Window 7
IE 9
Excel 2003
おそらく上記環境が原因かと思うのですが…
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
このライブラリは,Arrayに文字列と数値を混在させる仕様です。
getElementByIdの時はArrayの要素が2つで,
getElementsByTagNameの時はArrayの要素が3つです。
この個数を間違えると,文字列を渡すべきところに数値が来たりして,
型が一致しないエラーになります。
Array内の要素数を間違えていないか,ご確認ください。
サンプルコードのように,2つまたは3つの区切りごとに改行すれば,
この手のミスは発見しやすくなります。
もしそれでもエラーが継続する場合は,具体的なコードを投稿して下されば助かります。
遅くなってしまい申し訳ないです。
返答頂きありがとうございます。
まだエラーが出るので、下記のコードを診断いただければ幸いです。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub IE操作改()
Dim ie As Object
Set ie = new_ie("http://www.google.co.jp")
' 検索キーワードを入力
type_val ie, "gbqfq", "ホゲラッチョ"
' 検索ボタンクリック
submit_click ie, "gbqfba"
' 1件目のサイトのタイトルを表示
MsgBox domselec(ie, Array( _
"id", "res", _
"tag", "li", 0, _
"tag", "h3", 0 _
)).innerText
' 終了
ie.Quit
Set ie = Nothing
End Sub
' IEがビジー状態の間待ちます
Sub waitIE(ie)
Do While ie.Busy = True Or ie.readystate <> 4
DoEvents
Loop
Sleep 100
End Sub
' 新規IE作成
Function new_ie(home_url)
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
' 初期ページを開く
goto_url ie, home_url
ie.Visible = True
Set new_ie = ie
End Function
' URL移動
Sub goto_url(ie, url)
ie.Navigate url
waitIE ie
End Sub
' $
Function gid(ie, dom_id)
' 注:IEのgetElementByIdはnameも参照する
Set gid = ie.Document.getElementById("p")
End Function
' getElementsByTagName
Function gtn(parent, tag_name)
Set gtn = parent.getElementsByTagName(tag_name)
End Function
' 入力します
Sub type_val(ie, dom_id, val)
gid(ie, dom_id).Value = val
Sleep 100
End Sub
' 送信ボタンやリンクをクリック
Sub submit_click(ie, dom_id)
gid(ie, dom_id).Click
waitIE ie
End Sub
' 簡易DOMセレクタ
Function domselec(ie, arr)
Dim parent_obj As Object
Dim child_obj As Object
Set parent_obj = ie.Document
' 条件配列内で階層を深めていく
cur = 0
continue_flag = True
Do While continue_flag = True
' 適用メソッドの種類を判定
If arr(cur) = "id" Then
' getElementById
dom_id = arr(cur + 1)
Set child_obj = parent_obj.getElementById(dom_id)
' 条件配列内のカーソルを進める
cur = cur + 2
ElseIf arr(cur) = "tag" Then
' getElementsByTagName
tag_name = arr(cur + 1)
index_num = arr(cur + 2)
Set child_obj = parent_obj.getElementsByTagName(tag_name)(index_num)
' 条件配列内のカーソルを進める
cur = cur + 3
End If
' 取得したオブジェクトを次の階層の親オブジェクトとする
Set parent_obj = child_obj
' 条件配列の終端まで来たか
If cur > UBound(arr) Then
continue_flag = False
End If
Loop
Set domselec = parent_obj
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) IBM Notes9のメールをExcelVBAにて送信するコードについての質問です。 以下のコードを 3 2023/06/21 17:58
- Visual Basic(VBA) VBAのエラーについて 2 2023/08/02 17:46
- Visual Basic(VBA) Excel VBA で End Subのところで「型が一致しません」のエラーとなります。 6 2022/07/27 19:58
- Excel(エクセル) エクセルVBA 作業後に選択範囲を解除する方法 5 2023/02/17 07:13
- Visual Basic(VBA) M365環境での動作エラー、及び対応相談 1 2023/01/27 04:18
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Excel(エクセル) エクセル VBAの構文について 2 2023/02/10 18:26
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Visual Basic(VBA) Excelマクロでセルに値が入力されたら実行する 5 2023/08/06 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
実行時エラー -'-2147417848
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
VBAでのエラー
-
マクロについて教えてください...
-
INSERT INTOステートメント構文...
-
ExcelVBAで、ユーザー定義型は...
-
【VBA】ボタンに登録したマクロ...
-
実行時エラー3001「引数が間違...
-
VBSで変数の宣言はできないので...
-
Outlook.ApplicationをCreateOb...
-
ADODB.Streamを使用してUTF-8を...
-
VBAで、定数式が必要ですのエラ...
-
AxMSFlexGridのset_TextMatrix...
-
マクロを作成したのですが、以...
-
エクセルエラー13型が一致しま...
-
なぜエラーになるのでしょうか...
-
VBAのエラー発生場所をメッセー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
なぜこんな初歩的なVBAのIf文で...
-
ExcelVBA Range クラスの Page...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー -'-2147417848
-
【Excel VBA】マクロをボタンに...
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
マクロについて教えてください...
-
実行時エラー3001「引数が間違...
-
実行時エラー48発生時のDLL特定...
-
VB6+SQL サーバー 2000 で 実行...
-
エクセルエラー13型が一致しま...
-
VBS実行時エラー オブジェクト...
-
ADODB.Streamを使用してUTF-8を...
-
INSERT INTOステートメント構文...
-
VBAで、定数式が必要ですのエラ...
-
OLEDB.NETで接続できない
-
VBSで変数の宣言はできないので...
おすすめ情報