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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「Cancel = True」とはどういう...
-
別フォームから戻ったときのイ...
-
VB6.0のEnabledをfalseにしても...
-
VC++2010 エディットボックスに...
-
処理終了後のに砂時計が、クリ...
-
VB2005 DataGridView上でクリッ...
-
excelのタスクバーアイコンが・...
-
Sleep関数の最大時間について
-
デジタル時計の時刻合わせの方...
-
エクセルのシート上に別のシー...
-
PDFを(htmlのように)無限に縦...
-
[Java] Edgeでのアドレスバー非...
-
Javascript_submit()完了後に処...
-
同じページをブラウザで複数開...
-
Excelでワードアートや図を常に...
-
マイページはどこを開くの
-
Outlookでこのような表示がされ...
-
エクセルVBAでフォームのListbo...
-
ウィンドウの2重起動を防止したい
-
一定時間おきにアラームやポッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別フォームから戻ったときのイ...
-
「Cancel = True」とはどういう...
-
VB2005 DataGridView上でクリッ...
-
VB6.0のEnabledをfalseにしても...
-
excelのタスクバーアイコンが・...
-
マウスオーバー時に効果音を鳴らす
-
VBAでIEの「Web ページからのメ...
-
処理終了後のに砂時計が、クリ...
-
別ページからのタブ切り替えの...
-
Sleep関数の最大時間について
-
エクセル アプリケーションの...
-
Perlで数値(小数点、負の数、...
-
C++での連続した左クリックの禁...
-
C# マウスオーバーの記述方法
-
【C#】ラベルのダブルクリック...
-
VBAにてjavascriptを起動したい
-
MSFlexGrid
-
Perlプログラムについてファイ...
-
ASP DB検索結果の件数を事前表示
-
cgiを使用して時間制限
おすすめ情報