| 
    
     |  | ありがとうございます。 
 試してみます。
 
 ▼独覚 さん:
 >▼はてな さん:
 >標準モジュールに記載してください。
 >Sheet1のA1セルに記入されているパスがファイルエクスプローラーで開かれているかをチェックします。
 >
 >「Sub DirChk()」の
 >>  If CHK_FLG Then
 >>    MsgBox "開いてない"
 >>  Else
 >>    MsgBox "開いてる"
 >>  End If
 >に実際に行いたい処理を入れてください。
 >また、今は大文字・小文字の区別をしないようにしています。
 >区別させたい場合は
 >>'      If CHK_DIR = CHK_Collection(Loop_CNT) Then  '大文字(A)と小文字(a)を区別する
 >>      If StrConv(CHK_DIR, vbUpperCase) = StrConv(CHK_Collection(Loop_CNT), vbUpperCase) Then
 >部分のコメントを逆にしてください。
 >なお、「Function getOpenDirList() As Collection」のほうは
 >
 >ht tp://grayskybluesea.wordpress.com/2010/05/14/vba%E3%81%A7%E3%80%81%E9%
 >96%8B%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%83%95%E3%82%A9%E3%83%AB%E3%83%
 >80%E3%83%91%E3%82%B9%E3%82%92%E5%85%A8%E3%81%A6%E5%8F%96%E5%BE%97%E3%81%99%
 >E3%82%8Bfunction/
 >
 >
 >を元にしています。
 >(ほとんどそのままですが)
 >
 >Sub DirChk()
 >
 >  Dim CHK_DIR     As String
 >  Dim CHK_FLG     As String
 >  Dim CHK_Collection As Collection
 >  Dim CHK_DIR_CNT   As Integer
 >  Dim Loop_CNT    As Integer
 >
 >  CHK_DIR = Worksheets("Sheet1").Range("A1")
 >
 >'  パスの最後に"\"があれば削除する
 >  If Right(CHK_DIR, 1) = "\" Then
 >    CHK_DIR = Left(CHK_DIR, Len(CHK_DIR) - 1)
 >  End If
 >
 >  Set CHK_Collection = getOpenDirList()
 >  CHK_FLG = True
 >
 >  CHK_DIR_CNT = CHK_Collection.Count
 >
 >  If CHK_DIR_CNT > 0 Then
 >    For Loop_CNT = 1 To CHK_DIR_CNT
 >'      If CHK_DIR = CHK_Collection(Loop_CNT) Then  '大文字(A)と小文字(a)を区別する
 >
 >      If StrConv(CHK_DIR, vbUpperCase) = StrConv(CHK_Collection(Loop_CNT), vbUpperCase) Then
 >        CHK_FLG = False
 >        Exit For
 >      End If
 >    Next
 >  End If
 >
 >  If CHK_FLG Then
 >    MsgBox "開いてない"
 >  Else
 >    MsgBox "開いてる"
 >  End If
 >
 >End Sub
 >
 >
 >Function getOpenDirList() As Collection
 >  Dim s    As String
 >  Dim res   As New Collection
 >  Dim sh   As Object
 >  Dim wcobj  As Object
 >  Dim wobj  As Object
 >  Dim result As String
 >  Dim i    As Integer
 >
 >'オブジェクトの取得
 >  Set sh = CreateObject("Shell.Application")
 >
 >'コレクションオブジェクトの取得
 >  Set wcobj = sh.Windows
 >
 >  For Each wobj In wcobj
 >'Internt Explorerが開いているファイルは除外する。
 >    If (wobj.FullName Like "*Explorer.EXE") = True Then
 >      s = wobj.LocationURL
 >'オブジェクトフォルダは除外する
 >      If Left(s, 10) <> "file:///::" Then
 >' 最初の"file:///"を取り除く
 >        If s Like "file:///?:*" Then
 >
 >'ローカル
 >          s = Right(s, Len(s) - Len("file:///"))
 >        Else
 >
 >'サーバ
 >          s = Right(s, Len(s) - Len("file:"))
 >        End If
 >
 >' 左から1文字ずつチェックして文字列を置き換えていく
 >        result = ""
 >        For i = 1 To Len(s)
 >          Select Case Mid(s, i, 1)
 >            Case "/"
 >              result = result & "\"
 >            Case "%"
 >              result = result & Chr(CInt("&H" & Mid(s, i + 1, 2)))
 >              i = i + 2
 >            Case Else
 >              result = result & Mid(s, i, 1)
 >          End Select
 >        Next
 >        res.Add (result)
 >
 >      End If
 >    End If
 >  Next
 >  Set getOpenDirList = res
 >End Function
 
 
 |  |