Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4126 / 13646 ツリー ←次へ | 前へ→

【58206】IE7の更新 初心者 08/10/11(土) 19:28 質問[未読]
【58208】Re:IE7の更新 マクロマン 08/10/11(土) 20:08 発言[未読]
【58211】Re:IE7の更新 初心者 08/10/11(土) 21:53 お礼[未読]
【58224】Re:IE7の更新 マクロマン 08/10/12(日) 12:50 発言[未読]
【58231】Re:IE7の更新 初心者 08/10/12(日) 22:12 質問[未読]
【58235】Re:IE7の更新 マクロマン 08/10/13(月) 9:35 発言[未読]
【58237】Re:IE7の更新 初心者 08/10/13(月) 12:22 発言[未読]
【58247】Re:IE7の更新 マクロマン 08/10/14(火) 11:38 発言[未読]
【58325】Re:IE7の更新 初心者 08/10/18(土) 20:18 お礼[未読]

【58206】IE7の更新
質問  初心者  - 08/10/11(土) 19:28 -

引用なし
パスワード
   はじめまして。
VBAを始めたばかりで何もわかりませんが、質問をさせて頂きます。
VBAを使って、IE7を操作したいのですが、「更新」の仕方が分かりません。
どなたか、よければお教え下さい。

【58208】Re:IE7の更新
発言  マクロマン  - 08/10/11(土) 20:08 -

引用なし
パスワード
   Refresh
を使います。

Dim MyShell As Object
Dim objIE As Object
Dim MyWindow As Object
Dim Ck As Boolean
 Set MyShell = CreateObject("Shell.Application")
  For Each MyWindow In MyShell.Windows
  If UCase(Right(MyWindow.FullName, 12)) = "IEXPLORE.EXE" Then
    Set objIE = MyWindow
    Ck = True
    Exit For
  End If
  Next
 If Ck = False Then
   AppActivate Application.Caption
   MsgBox "IEが起動していません。"
   Exit Sub
 End If
 With objIE
 .Visible = True
 .Refresh
 End With
 Set MyShell = Nothing
 Set objIE = Nothing

【58211】Re:IE7の更新
お礼  初心者  - 08/10/11(土) 21:53 -

引用なし
パスワード
   マクロマンさん、ご丁寧に説明をありがとうございます。
教えていただいたものを入れさせて頂いて、挑戦してみます!(^^)!

【58224】Re:IE7の更新
発言  マクロマン  - 08/10/12(日) 12:50 -

引用なし
パスワード
   「更新」以外にも進む、戻る、ホームも制御できます。

tp://www.tsware.jp/tips/tips_207.htm

【58231】Re:IE7の更新
質問  初心者  - 08/10/12(日) 22:12 -

引用なし
パスワード
   具体的には「一定間隔でwebサイトの更新を行うソフト」を作りたいのですが、
教えていただいた「Refresh」メソッドを使うと、
このようなエラーメッセージが出てしまいました。

実行時エラー '-2147467259 (80004005)':
'Refresh'メソッドは失敗しました:'IWebBrowser2'オブジェクト

色々と調べてはしましたが、全くわかりません。
どうして出てしまうのでしょうか?
察しがつくようでしたら、よろしくお願いします。

【58235】Re:IE7の更新
発言  マクロマン  - 08/10/13(月) 9:35 -

引用なし
パスワード
   現状のコードと、どこでエラーになるかをご提示下さい。

【58237】Re:IE7の更新
発言  初心者  - 08/10/13(月) 12:22 -

引用なし
パスワード
    >現状のコードと、どこでエラーになるかをご提示下さい。
失礼しました。
____________________________

Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMillsecounds As Long)
Declare Function GetTickCount Lib "kernel32.dll" () As Long

Sub aaa()
  Dim Flg As Boolean
  Dim Stm As Long
  Dim objIE As Object   'IEオブジェクト参照用
  Dim c As Long      'カウント用
  Dim kai As Long      '更新回数の読み込み用
  Dim kan As Single
  Dim mes As Integer
  Dim mes2 As Integer
  Dim mes3 As Integer
  Dim MyShell As Object
  Dim MyWindow As Object
  Dim Ck As Boolean
  
  
  Flg = False
  kai = InputBox("更新回数を入力してください", "更新回数の確認")
  If kai > 0 Then
    GoTo KANKAKU
  Else
    Exit Sub
  End If

KANKAKU:
  
  kan = InputBox("更新間隔を入力してください(秒)", "更新間隔の確認", "0.3")
  Select Case kan
    Case Is > 0
      GoTo kakunin
    Case kan = ""
      MsgBox "更新間隔を入力してください"
      GoTo KANKAKU
  End Select
  
kakunin:
  mes3 = MsgBox("更新回数は" & kai & "回" & vbCrLf & vbCrLf & "更新間隔は" & kan & "秒間隔", vbOKCancel, "総確認")
  If mes3 = 1 Then
    GoTo IE
  Else
    Exit Sub
  End If
      
IE:
  'インターネットエクスプローラーのオブジェクトを作る
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True  '見えるようにする(お約束)
  objIE.navigate "サイトのURL" '文字列で指定したURL
  
  Set MyShell = CreateObject("Shell.Application")
  For Each MyWindow In MyShell.Windows
    If UCase(Right(MyWindow.FullName, 12)) = "IEXPLORE.EXE" Then
    Set objIE = MyWindow
    Ck = True
    Exit For
    End If
  Next
  If Ck = False Then
    AppActivate Application.Caption
    MsgBox "IEが起動していません。"
    Exit Sub
  End If
  With objIE
    .Visible = True
    .Refresh     ←☆☆☆☆☆☆☆☆☆☆☆☆
  End With
  c = 0
  Do
    c = c + 1
    Stm = GetTickCount
    objIE.Refresh
    If c = kai Then     'もし「c」と「kai」が同じだったら、
      Flg = True     '「Flg」をtrueにする。
    End If
    DoEvents          '表示!
    Do
      Call Sleep(3)
    Loop Until GetTickCount - Stm > kan * 1000
  Loop Until Flg
  objIE.Refresh
  Set objIE = Nothing
  'Excelをアクティブに・・・・・・・・・・・
  DoEvents
  MsgBox "更新終了!!!"
End Sub
___________________________

「☆☆☆☆」の部分でエラーが出るようです。
失礼ながらいろんなサイトからコピペさせて頂いたので、
無駄な部分も多かろうと思います。
お手数をおかけしますが、よろしくお願いします。


【58247】Re:IE7の更新
発言  マクロマン  - 08/10/14(火) 11:38 -

引用なし
パスワード
   提示いただいたコードはこちらではエラーになりませんでした。

Win:XP SP2
Excel:2002
IE:7

回数:10回
間隔:0.3秒

どのような処理をしているのかいまいちつかめてませんが、
IEがBusyになっているのかもしれません。
Do〜Loop
で更新完了まで待つ処理が必要なのかもしれません。

【58325】Re:IE7の更新
お礼  初心者  - 08/10/18(土) 20:18 -

引用なし
パスワード
   マクロマンさん、返信遅れてすみません!
ご丁寧に教えて頂いているのに。。。

お教えいただいた通り、
  Do While objIE.Busy = True
    DoEvents
  Loop
を入れてみると、上手く動くようになりました。

まだまだ不安定なこともありますが、少しずつ頑張ってみようと思います。

本当にありがとうございました。
いずれまた質問させて頂く時には、ご指導のほど、よろしくお願いします☆

4126 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free