三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

指定したURLのIEを探し閉じる方法

www.youtube.com
http://www.youtube.com/watch?v=T0WjAw-809Q

下記の質問メッセージを受け取りました。

>起動しているIEの中で、ある特定、
>例えば Yahooのアドレス(http://www.yahoo.co.jp/)が有る場合
>そのIEを強制的に閉じる方法
>をVBAで書く場合どうすればよいですか?

前に作った、
3/27 起動しているIEを全て閉じたい。
http://ken3-info.blog.ocn.ne.jp/objie/2009/03/327_ie_5a92.html

Sub ccc()  'ここで、.Quitで終わらせる。
    Dim objShell  As Object
    Dim objIE     As Object
    Dim n         As Integer
    
    Set objShell = CreateObject("Shell.Application")
      
    '後ろから消してく。
    For n = objShell.Windows.Count To 1 Step -1  'MAXから-1ひいてく感じ
        Set objIE = objShell.Windows(n - 1) 'n番目のウインドウを代入
        MsgBox "確認" & objIE
        objIE.Quit
    Next
    Set objShell = Nothing

End Sub

↑を改造して、下記のような感じ↓でなんとか完成?しました・・・

Sub ddd()  '指定したURLを.Quitで終わらせる。
    Dim objShell  As Object
    Dim objIE     As Object
    Dim n         As Integer
    
    'これで、エクスプローラーのウインドウを取得する
    Set objShell = CreateObject("Shell.Application")
      
    '後ろから消してく。.Windowsでエクスプローラーとインターネットエクスプローラーにさわれる
    For n = objShell.Windows.Count To 1 Step -1  'MAXから-1ひいてく感じ
        Set objIE = objShell.Windows(n - 1) 'n番目のウインドウを代入
        '.FullNameで普通のファイルエクスプローラーとIE(インターネットエクスプローラー)を区別する
        If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE" Then
            Debug.Print objIE.document.URL
            If objIE.document.URL = "http://www.yahoo.co.jp/" Then '次に.URLでURLのチェック
                objIE.Quit   '.QUITで該当URLを閉じる
            End If
        End If
    Next
    Set objShell = Nothing

End Sub

ポイントは、
.document.URLでURLが取得可能なので、普通に
If objIE.document.URL = "http://www.yahoo.co.jp/" Then 'で比べて、
objIE.Quit で閉じました。

で、問題があって、普通のd:\などのフォルダーを開いていると、
.documentが無いので、objIE.document.URLでエラーが発生します。

そのエラーを回避したいので、(※回避しないで、エラーを無視して進むなんて手もありますが、今回は、事前にIEと普通のエクスプローラ、フォルダー開きをチェックしました)
.FullNameで起動した.exeを調べてみます。
If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE"
で判断させて、IEか普通のフォルダーを見ているのか判断してみました。

まぁ、実際に動かしてみて、試行錯誤して見てください。。。

VBAIE処理で何かの参考となれば幸いです。。。

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)