Excel VBA質問箱 IV

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

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


22380 / 76738 ←次へ | 前へ→

【59741】Re:IE操作中のポップアップの処理
発言  熊谷隆史  - 09/1/6(火) 12:06 -

引用なし
パスワード
   ▼あつし さん:
参照設定の仕方は、調べてください。
乱暴な言い方をすれば標準モジュール以外が、オブジェクトモジュールです。
※ 本来はクラスモジュールを使うのですが、ベタに記述しています。

---
Option Explicit
'参照設定
'Microsoft HTML Object Library
'Microsoft Internet Controls
' オブジェクトモジュール

Private Declare Function GetLastActivePopup Lib "user32" _
    (ByVal hwndOwnder As Long) As Long
Private Declare Function PostMessage Lib "user32" _
    Alias "PostMessageA" (ByVal hwnd As Long, _
    ByVal Msg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long
Private Const WM_COMMAND = &H111

Private WithEvents objIE As InternetExplorer
Private WithEvents objIE2nd As InternetExplorer
Private flgIE As Boolean
Private flgIE2nd As Boolean

Private Sub test()

  Dim hDlg As Long
  Dim i As Long
  Dim obj As MSHTML.HTMLInputElement
  Dim DOM As MSHTML.HTMLDocument
  Dim o As MSHTML.HTMLWindow2
  Dim timerID As Long

  flgIE = False
  flgIE2nd = False
  Set objIE = New InternetExplorer
  objIE.Visible = True
  objIE.Navigate "" ' ←実際のURLを指定。

  '最初のIEのDocumentCompleteイベント待ち
  Do
    DoEvents
  Loop Until flgIE = True
  Set DOM = objIE.Document

  For Each obj In DOM.getElementsByTagName("INPUT")
    If obj.Value = "投  票" Then
      Exit For
    End If
    i = i + 1
  Next
  Set o = DOM.Script
  timerID = o.setTimeout("jscript:document.getElementsByTagName('INPUT').item(" & i & ").click()", 1000, "VBScript")

  'メッセージダイアログのウィンドウハンドルを取得。
  Do
    DoEvents
    hDlg = GetLastActivePopup(objIE.hwnd)
  Loop Until hDlg <> objIE.hwnd
  o.clearTimeout timerID

  'メッセージダイアログのOKボタン押下
  PostMessage hDlg, WM_COMMAND, vbOK, 0

  'もう一つのIEのDocumentCompleteイベント待ち
  Do
    DoEvents
  Loop Until flgIE2nd = True

End Sub

Private Sub objIE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  If pDisp Is objIE Then
    flgIE = True
  End If
End Sub

Private Sub objIE_OnQuit()
  Set objIE = Nothing
End Sub

Private Sub objIE_NewWindow2(ppDisp As Object, Cancel As Boolean)
  Set objIE2nd = New InternetExplorer
  Set ppDisp = objIE2nd
End Sub

Private Sub objIE2nd_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  If pDisp Is objIE2nd Then
    flgIE2nd = True
  End If
End Sub

Private Sub objIE2nd_OnQuit()
  Set objIE2nd = Nothing
End Sub

4 hits

【59038】IE操作中のポップアップの処理 あつし 08/11/24(月) 15:26 質問
【59039】Re:IE操作中のポップアップの処理 かみちゃん 08/11/24(月) 15:39 発言
【59053】Re:IE操作中のポップアップの処理 あつし 08/11/25(火) 0:05 発言
【59054】Re:IE操作中のポップアップの処理 ichinose 08/11/25(火) 5:51 発言
【59055】Re:IE操作中のポップアップの処理 あつし 08/11/25(火) 9:51 発言
【59062】Re:IE操作中のポップアップの処理 ichinose 08/11/25(火) 20:46 発言
【59069】Re:IE操作中のポップアップの処理 あつし 08/11/26(水) 13:49 発言
【59199】Re:IE操作中のポップアップの処理 あつし 08/12/2(火) 10:30 発言
【59243】Re:IE操作中のポップアップの処理 熊谷隆史 08/12/3(水) 12:06 発言
【59258】Re:IE操作中のポップアップの処理 あつし 08/12/3(水) 21:55 発言
【59276】Re:IE操作中のポップアップの処理 熊谷隆史 08/12/4(木) 12:02 発言
【59298】Re:IE操作中のポップアップの処理 あつし 08/12/5(金) 11:43 発言
【59307】Re:IE操作中のポップアップの処理 熊谷隆史 08/12/5(金) 15:37 発言
【59308】Re:IE操作中のポップアップの処理 熊谷隆史 08/12/5(金) 17:08 発言
【59323】Re:IE操作中のポップアップの処理 熊谷隆史 08/12/6(土) 12:29 発言
【59326】Re:IE操作中のポップアップの処理 熊谷隆史 08/12/6(土) 13:25 発言
【59379】Re:IE操作中のポップアップの処理 あつし 08/12/9(火) 10:33 発言
【59646】Re:IE操作中のポップアップの処理 あつし 08/12/28(日) 1:25 お礼
【59724】Re:IE操作中のポップアップの処理 熊谷隆史 09/1/4(日) 10:48 発言
【59732】Re:IE操作中のポップアップの処理 あつし 09/1/5(月) 10:45 お礼
【59741】Re:IE操作中のポップアップの処理 熊谷隆史 09/1/6(火) 12:06 発言
【59057】Re:IE操作中のポップアップの処理 かみちゃん 08/11/25(火) 12:56 発言
【59067】Re:IE操作中のポップアップの処理 あつし 08/11/26(水) 13:04 発言
【59076】Re:IE操作中のポップアップの処理 かみちゃん 08/11/26(水) 21:14 発言
【59096】Re:IE操作中のポップアップの処理 あつし 08/11/28(金) 12:16 発言
【59251】Re:IE操作中のポップアップの処理 Raiku 08/12/3(水) 19:43 発言

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