初めまして
これまで営業でしたが、今週より人手不足の為急遽内勤業務もすることになりました。
色々な物の価格データ収集を行うよう指示されましたがWEBからすべてをコピペできなかった為、
自動化含めてVBAに取り組みだしました。
基本的なエラーだという事は分かりましたが勉強し始めで知識不足から壁にぶち当たっています。
皆様の知識をお借りしたいと思いますのでご教授のほどお願いします。
・やりたい事 ページ内のHTML要素 <td class='spec'>に紐づいているURLを全て取得したいです。
Sub リンク取得P222()
Dim ObjBrw As Object
Dim temp As Object
Dim i As Long
Dim objIE As InternetExplorer
i = 2
Set ObjBrw = CreateObject("InternetExplorer.Application")
With ObjBrw
.navigate "http://www.p-souba.com/krank_1.htm"
.Visible = True
Do While .Busy = True Or .readyState <> 4
Loop
If TypeName(.document) = "HTMLDocument" Then
Cells(i, 1).Value = .document.Title
i = i + 1
For i = 0 To objIE.document.getElementsByClassName("spec").Length - 1
Cells(i, 2).Value = temp.innerText
Cells(i, 3).Value = temp.href
i = i + 1
Next
End If
End With
”オブジェクト変数またはwithブロック変数が設定されていません
宜しくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは
今、スマホからなので見た目だけでの回答になりますけれど、見落しもあるとは思いますが・・・
エラーは、
>Dim objIE As InternetExplorer
で発生していると想像します。
No1様がご指摘のように参照設定をしても良いですし、あるいはVariantまたはObjectで定義しておけば参照設定をしなくても大丈夫と思います。
また、
>For i = 0 To objIE.document.getElementsByClassName("spec").Length - 1
>Cells(i, 2).Value = temp.innerText
>Cells(i, 3).Value = temp.href
>i = i + 1
>Next
ループ内にtempへの代入がないので、値が代わり様がないです。
でも、その前に、
>Cells(i, 2)
で、最初のi=0が「インデックスが不正」のエラーの原因となると思います。。
さらに前の方の処理ででTitleをシートの2行目に記入しているので、3行目から記入していかないと上書きしてしまうことになります。
タイトル記入部分の、
>i = 2
>Cells(i, 1).Value = .document.Title
>i = i + 1
というiの制御もあまり意味がないです。
一度だけの実行なので、
Cells(2, 1).Value = .document.Title
の処理ですみますし、i = i + 1としても、以降でiを制御し直しているので意味がなくなっています。
さらには、ループ内で制御変数iを変更してしまっているのは混乱の元です。
iを自分でコントロールするのならば、
For Each ~~ In ~~
の構文を利用した方が良いでしょう。
https://docs.microsoft.com/ja-jp/dotnet/visual-b …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelについて質問です。 ・デ...
-
Excel2010で、今の、Ex...
-
UNIQUE関数が使えないバージョ...
-
Excelについて質問です。
-
エクセルに詳しい方教えて下さ...
-
Excelで「時間の足し算」はどう...
-
Excelについて質問です。 表の...
-
オートフィルのショートカット...
-
Excel表の文字の幅を狭くしたい
-
勤務表をエクセルで作る際、 最...
-
Excelのフォントについて
-
Excel 2019 のピボットテーブル...
-
エクセルのパスワードの一括解...
-
エクセルのソートについて
-
Excel 連番を入力する方法
-
Excel 漢字二文字の先頭と最後 ...
-
列を増やさずに、月だけの件数...
-
Excelで、10000,20000,30000と...
-
エクセルの検索関数でシート内...
-
Excel 2019 での上書き保存につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ページソースからのURL抽出
-
AJAXを使用したサイトに対するg...
-
htmlelementからinternet explo...
-
VBA シートのボタン名を変更し...
-
ユーザーフォームを表示中にシ...
-
VBA(エクセル)で自動的にボタン...
-
worksheetFunctionクラスのVloo...
-
実行時エラー 438になった時の...
-
「Columns("A:C")」の列文字を...
-
エクセルエラー13型が一致しま...
-
eclipseのデバッグ中に変数の値...
-
ウォッチ式の文字数制限について
-
【C#/Java?】try-catchでcatch...
-
ユーザーフォームのテキストボ...
-
カメラスクロールするのを動画...
-
Microsoft Formsの「個人情報や...
-
IF文に時間(何時から何時ま...
-
エクセル・VBA CheckBoxのオブ...
-
全てのオブジェクトのプロパテ...
-
【Excel VBA】マクロをボタンに...
おすすめ情報