dポイントプレゼントキャンペーン実施中!

FC2にログインし、アクセス解析のページを開きたいのですが

Dim objIE As InternetExplorer
Sub test()

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True

objIE.navigate "http://fc2.com/login.php"

Call wait

objIE.document.all("email").Value = "test@yahoo.co.jp"
objIE.document.all("pass").Value = "test"
objIE.document.all.Item("Image").Click

Call wait 'ここが無視される!!!

objIE.navigate "http://analyzer.fc2.com/"

End Sub
Sub wait()

Const READYSTATE_COMPLETE As Long = 4

Do Until objIE.readyState = READYSTATE_COMPLETE
Loop

Do While objIE.Busy = True
DoEvents
Loop

End Sub

このコードだとうまくいきません。

このコードをF5で実行すると、エラーにはならないのですが、
objIE.navigate "http://analyzer.fc2.com/"
ができてません。

objIE.navigate "http://analyzer.fc2.com/"の部分にブレークポイントを設置し、
ログイン後の画面がちゃんと表示されたことを確認して、
objIE.navigate "http://analyzer.fc2.com/"に進むと、
objIE.navigate "http://analyzer.fc2.com/"が無視され、
http://analyzer.fc2.com/のページに移りません。

同じ条件なのに、
objIE.navigate "http://analyzer.fc2.com/"の部分にブレークポイントを設置し、
ログイン後の画面がちゃんと表示されたことを確認して、
objIE.navigate "http://analyzer.fc2.com/"に進むと、

実行時エラー -2147024726のオートメーションエラーになることがあります。

どうやったら、2回目のwaitが無視されずに進みますか?

ログインされると
http://fc2.com/login.php
から
http://id.fc2.com/?login=done
へURLが変わりますが
objIEをウォッチウィンドウで見てると、ずっとhttp://fc2.com/login.phpのままです。

環境:win8.1/エクセル2010

A 回答 (1件)

こんにちは。



以下はちゃんと動くか、実際の所は分かりません。
思ったようにならないのは、FC2側で自動設定されているからだと思います。

'//
Option Explicit

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Sub Test2()
Dim objIE As InternetExplorer '参照設定:Microsoft Internet Controls
Set objIE = New InternetExplorer 'インスタンス生成
Const READYSTATE_COMPLETE As Long = 4 '本来は意味がない CreateObjectの場合に生きる
Const URL1 As String = "http://fc2.com/login.php"
Const URL2 As String = "http://analyzer.fc2.com/"

On Error GoTo ErrHandler 'エラートラップ
With objIE
  .Visible = True
  .Navigate URL1
  Do While .Busy
   DoEvents
  Loop
  Do Until .ReadyState = READYSTATE_COMPLETE
   DoEvents
  Loop
   Sleep 2000
   .Document.All("email").Value = "test@yahoo.co.jp" 'MailAddress
   .Document.All("pass").Value = "test" 'PassWord
   .Document.All.Item("Image").Click
   '.Navigate URL2 'これをなしで最初やってみたら?
ErrHandler:
   If Err.Number > 0 Then
     AppActivate "Microsoft Excel" 'アイコンの点滅のみ。本来は、Win32 APIの範囲
     MsgBox "ログインに失敗しました。" & vbNewLine & .LocationURL, vbExclamation
     .Quit
     Set objIE = Nothing '常駐した時のおまじない
   End If
   End With
End Sub

'//


>Call wait 'ここが無視される!!!
Wait は、VBのコマンド名です。IE で開くために、objIE.Busy とか、.ReadyState を使うのですから、使い回しは変です
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!