
vba IE操作で こういう事ってできないのでしょうか?
Dim objIE As InternetExplorer
Sub test()
Dim myObj As Object
Dim myStr As String
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "http://employment.en-japan.com/search/search_lis …
objIE.Visible = True
Call iewait
For Each myObj In objIE.Document.all.tags("a")
If myObj.outerText = "詳細を見る" Then
myObj.Click
Call iewait
Debug.Print objIE.LocationName
objIE.GoBack
Call iewait
End If
Next
objIE.Quit
Set objIE = Nothing
End Sub
Sub iewait()
Const READYSTATE_COMPLETE As Long = 4
Do Until objIE.ReadyState = READYSTATE_COMPLETE
Loop
Do While objIE.Busy = True
DoEvents
Loop
End Sub
このコードを実行して、
1ページ目の「詳細を見る」をクリックして、2ページ目のタイトルを抜き出し
1ページ目に戻り、次の「詳細を見る」をクリックして、2ページ目のタイトルを抜き出し・・・
と言う処理を繰り返したいのですが、
1回目のmyObj.Clickを通った後(Call iewaitの後かも?)に、
myObjの値が変数なしになってしまい、
2回目のIf myObj.outerText = "詳細を見る" Thenで
書き込みできません。(Error 70)
になります。
1ページ目のリンクをクリックして、戻って
また1ページ目のリンクをクリックして・・・
と言う処理をしたい場合どうすればよろしいでしょうか?
No.3ベストアンサー
- 回答日時:
>No.1 この回答へのお礼
aタグをLoopにかけてみました。
Dim i As Long
With objIE
For i = 0 To .document.all.tags("a").Length - 1
If .document.all.tags("a")(i).innerText = "詳細を見る" Then
.document.all.tags("a")(i).Click
Call iewait
Debug.Print i & ":" & .LocationName
.GoBack
Call iewait
End If
Next i
End With
No.2
- 回答日時:
myCnt1 = 0
myCnt2 = 0
Do
____For Each myObj In objIE.Document.all.tags("a")
________If myObj.outerText = "詳細を見る" Then
____________myCnt2 = myCnt2 + 1
____________If myCnt2 > myCnt1 Then
________________myCnt1 = myCnt2
________________myCnt2 = 0
________________myObj.Click
________________Call iewait
________________objIE.GoBack
________________Call iewait
________________Exit For
____________End If
________End If
____Next
Loop
終了条件が足りないのでループしてますが
消えてしまうなら もう一度取得しなおす
同じものを処理しないように カウンターで判断
しています
No.1
- 回答日時:
"詳細を見る"をClickしなくても取れるようです。
Dim txt1 As String, txt2 As String
For Each myObj In objIE.document.all.tags("table")
If myObj.className = "listSummary" Then
txt1 = myObj.all.tags("div")(1).innerText
txt2 = myObj.all.tags("a")(1).innerText
Debug.Print txt1 & "/" & txt2
End If
Next
やってみたら取れました。
ちなみに今回はこの方法で取得できたからいいのですが、
私の質問文のように、次のページへ行って戻って・・・をしたい場合は、
やはり無理ってことでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別フォームから戻ったときのイ...
-
「Cancel = True」とはどういう...
-
Sleep関数の最大時間について
-
VB6.0のEnabledをfalseにしても...
-
VB2005 DataGridView上でクリッ...
-
デジタル時計の時刻合わせの方...
-
スクリプトって、何ですか?ど...
-
[Java] Edgeでのアドレスバー非...
-
リストビューをスクロールさせ...
-
マイページはどこを開くの
-
エクセルのシート上に別のシー...
-
一定時間おきにアラームやポッ...
-
Javascript_submit()完了後に処...
-
Outlookでこのような表示がされ...
-
HP作成で、画面の更新をしない...
-
小さな表示窓の呼び方は
-
Excel用ボタン天国200の件
-
エクセルでポップアップを出し...
-
ホームページ全体を拡大・縮小...
-
エクセルVBAでフォームのListbo...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「Cancel = True」とはどういう...
-
別フォームから戻ったときのイ...
-
VB2005 DataGridView上でクリッ...
-
excelのタスクバーアイコンが・...
-
エクセル アプリケーションの...
-
Perlで数値(小数点、負の数、...
-
【C#】ラベルのダブルクリック...
-
VB6.0のEnabledをfalseにしても...
-
【ImageMagick】 PDF → JPG 変...
-
MSFlexGrid
-
エクセル:マクロを実行してい...
-
処理終了後のに砂時計が、クリ...
-
vba IE操作で こういう事って...
-
DLLが LoadLibrary() でロー...
-
C# マウスオーバーの記述方法
-
JSPページがダウンロードになっ...
-
フォームの値を取得できません...
-
同一の検索値が複数存在する場...
-
遷移元を知りたい。
-
マウスオーバー時に効果音を鳴らす
おすすめ情報