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_list.cfm?area=23&startRow=1&m=1&job=100000"
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ページ目のリンクをクリックして・・・
と言う処理をしたい場合どうすればよろしいでしょうか?
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_list.cfm?area=23&startRow=1&m=1&job=100000"
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ページ目のリンクをクリックして・・・
と言う処理をしたい場合どうすればよろしいでしょうか?
当方 IE9+2007です。
Sub yahoo()
Dim objIE As Object
Dim i As Long
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://www.yahoo.co.jp/"
Do Until objIE.Busy = False And objIE.ReadyState = 4: Loop
If objIE.Document.Body.innerHTML Like "*こんにちは、*さん*" Then
i = MsgBox("別のIDでログインしています!続けますか?", vbYesNo + vbApplicationModal)
If i = 7 Then End
End If
End Sub
このような事がやりたいのですが、
IEブラウザを立ち上げてメッセージボックスをvbApplicationModalで表示させても
ブラウザより裏側で表示されてしまいます。
If objIE.Document.Body.innerHTML Like "*こんにちは、*さん*" Then
i = MsgBox("別のIDでログインしています!続けますか?", vbYesNo + vbApplicationModal)
If i = 7 Then End
End If
objIE.Visible = True
という順番にすればよいのですが、他のコードの関係もあってメッセージボックスより先にブラウザを表示させたいのです。
そんな事は可能でしょうか?
ご回答よろしくお願いします。
FormulaR1C1ではなく
Range形式でVBAでワークシート関数をセルにいれるコードを書くにはどうすればいいでしょう?
Sub Macro()
ActiveCell.FormulaR1C1 = "=LEN(RC[-1])"
End Sub
これを
Sub Macro()
ActiveCell.FormulaR1C1 = "=LEN(a1)"
End Sub
こうすると、
数式バーには、=LEN('a1')と入っており、
セルの値は#NAME?
になります。
アポストロフィーが余計なのですがどうすれば取れますか?
Sub マクロ1()
Dim MyFileFullName As String
MyFileFullName = "C:\Users\名刺.jpg"
Shell "Rundll32.exe" & " Shimgvw.dll,ImageView_Fullscreen" & " " & MyFileFullName
End Sub
を実行すると、アプリケーションの裏側に開いてしまうのですが、
表側にする方法はありますか?
Sub マクロ1()
Dim MyFileFullName As String
Dim i As Long
MyFileFullName = "C:\Users\名刺.jpg"
i =Shell "Rundll32.exe" & " Shimgvw.dll,ImageView_Fullscreen" & " " & MyFileFullName
AppActivate i
End Sub
こうしようとすると、構文エラーになります。