こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルマクロでIE操作

IEをエクセルマクロで操作する際に現在は下記のようなコードで立ち上げでいます。

この時、1回目の処理が終わり、もう一度同じボタンを押してコードを実行する際
あたにIEが立ち上がってしまいます。

同じURLのIEがすでに立ち上がっている際には
そのIEを利用して処理を行うにはどのようにしたらよいでしょうか?

ption Explicit
'Sleepを使用する場合のお約束
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function CloseWindow Lib "User32" (ByVal hwnd&) As Long
Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Dim objIE As Object '変数を定義
Dim Obj As Object '変数を定義



Sub 間接() 'IEテストする。
Dim txtSelect As HTMLSelectElement
Dim objTAG As Object


'IEの起動
Dim objIE As Object '変数を定義します。
Set objIE = New InternetExplorerMedium
objIE.Visible = True '可視、Trueで見えるようにします。

'処理したいページを表示します。
objIE.Navigate "https://www.google.co.jp/?gws_rd=ssl"
Sleep (1000)

Do While objIE.ReadyState <> 4 'サイトが開かれるまで待つ(お約束)
Do While objIE.Busy = True 'サイトが開かれるまで待つ(お約束)

Loop
Loop

投稿日時 - 2018-04-06 09:20:42

QNo.9485582

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

このサイトがわかりやすいです。
すべてのIEウィンドウをfor文で回して対象のウィンドウが探せます。
https://www.vba-ie.net/ie/iefind.html

投稿日時 - 2018-04-12 21:04:26

ANo.1

既に立ち上がっているUrl を探すサブルーチンです。
ワイルドカードを使えるように、Likeにしてありますが、その必要がないなら、= にしてもいいです。
  Set objIE = UrlSearch("https://www.google.co.jp/?gws_rd=ssl")
とすれば、グーグルが立ち上がっていれば、セットされます。なければ、Nothing になります。
処理した後ということは、検索をした後でしょうか、であれば
  Set objIE = UrlSearch(https://www.google.co.jp/*")
です。
'
Function UrlSearch(LocationURL As String) As Object
'
  Dim IEI As Object
'
  Set IEI = CreateObject("Shell.Application")
'
  For Each IEI In IEI.Windows
    On Error Resume Next
'
    If IEI.Name <> "Internet Explorer" Then
    ElseIf IEI.LocationURL Like LocationURL Then
      Set UrlSearch = IEI
    End If
    On Error GoTo 0
  Next IEI
End Function

投稿日時 - 2018-04-06 22:58:45

あなたにオススメの質問