初めまして
これまで営業でしたが、今週より人手不足の為急遽内勤業務もすることになりました。
色々な物の価格データ収集を行うよう指示されましたが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ランキング
-
VBA IE操作
-
worksheetFunctionクラスのVloo...
-
実行時エラー 438になった時の...
-
【C#/Java?】try-catchでcatch...
-
VBA シートのボタン名を変更し...
-
ウォッチ式の文字数制限について
-
「Columns("A:C")」の列文字を...
-
VBA(エクセル)で自動的にボタン...
-
ListBoxで改行したい
-
VBAで既に開いている別アプリケ...
-
ユーザーフォームに別シートか...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームを表示中にシ...
-
実行時エラー 3265「要求された...
-
VBSで変数の宣言はできないので...
-
Hideについて(.NET)
-
Excelでフィルタをかけると警告...
-
フォーム上の現在アクティブな...
-
Form_Load と Form_Activate の...
-
テキストボックス(VBA)でEnter...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報