【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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
ロボットの住む世界で流行ってる罰ゲームとは?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
なぜこんな初歩的なVBAのIf文でエラーか発生して使えないのか、全く理解出来ません。誰か助けてくださ
Visual Basic(VBA)
-
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
Excel VBA で End Subのところで「型が一致しません」のエラーとなります。
Visual Basic(VBA)
-
-
4
[Excel2000_VBA] 型が一致しませんメッセージが表示
Visual Basic(VBA)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
エクセルエラー13型が一致しませんの直し方教えて下さい。
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAがブレークモードになっ...
-
実行時エラー 438になった時の...
-
VBAでのエラー
-
なぜこんな初歩的なVBAのIf文で...
-
エクセルエラー13型が一致しま...
-
VBS実行時エラー オブジェクト...
-
Invalid procedure call or arg...
-
ExcelVBA Range クラスの Page...
-
エクセルVBA autofilterでエラー
-
EXCEL/VBAで、自分のPCだけエラ...
-
実行時エラー48発生時のDLL特定...
-
【エクセル】ハイパーリンク先...
-
Access:結果は出るがエラー
-
VB6+SQL サーバー 2000 で 実行...
-
アクセス 実行時エラー3265
-
ExcelVBAで、ユーザー定義型は...
-
VBで構造体を使うさ際の64k...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー3001「引数が間違...
-
VBSで変数の宣言はできないので...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
VBAがブレークモードになっ...
-
なぜこんな初歩的なVBAのIf文で...
-
【Excel VBA】マクロをボタンに...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
ExcelVBAで、ユーザー定義型は...
-
EXCEL VBAマクロ中断でデバッグ...
-
マクロについて教えてください...
-
プロシージャ名の取得
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
なぜエラーになるのでしょうか...
-
VBAのコードがエラーになっ...
-
[Delphi] データセットは閉じて...
おすすめ情報