0

VBA を使用して、特定のフォルダーが開いているかどうかを確認しようとしています。私はこのコードを見つけました:

Sub test1()
Dim OpenFold As Variant
Dim oShell As Object
Dim Wnd As Object
Dim strFolder

OpenFold = "mysubfolder"
strFolder = "U:\myfolder\" & OpenFold
Set oShell = CreateObject("Shell.Application")

For Each Wnd In oShell.Windows
If Wnd.Document.Folder.Self.Path = OpenFold Then 'this is where it gives me the error
Exit Sub ' Folder is open - exit this Sub
End If
Next Wnd
Application.ThisWorkbook.FollowHyperlink Address:=strFolder, NewWindow:=True
End Sub

しかし、オブジェクトがこのプロパティまたはメソッドをサポートしていないというエラーが表示されます。

何か案は?

4

1 に答える 1

1

それも私を助けてくれたコードをありがとう...私は、Wnd.Document.Folder.Self.PathがIEなどのすべてのWindowオブジェクトに適用されないことを確認しました。そのため、エラーメッセージが表示されます。ウィンドウが Windows エクスプローラー ウィンドウであるかどうかを最初に確認してください。以下のコード。

注: Wnd.Document.Folder.Self.Pathは完全なパス文字列を提供するので、 と比較することをお勧めしますstrFolder

それを変数と比較したい場合はOpenFold、使用したいかもしれません

Wnd.LocationName = OpenFold

最終コード:

Sub test1()
        Dim OpenFold As Variant
        Dim oShell As Object
        Dim Wnd As Object
        Dim strFolder

        OpenFold = "mysubfolder"
        strFolder = "U:\myfolder\" & OpenFold
        Set oShell = CreateObject("Shell.Application")

        For Each Wnd In oShell.Windows
            If Wnd.Name = "Windows Explorer" Then
               If Wnd.Document.Folder.Self.Path = strFolder Then Exit Sub 
            End If
        Next Wnd
        Application.ThisWorkbook.FollowHyperlink Address:=strFolder, NewWindow:=True
End Sub
于 2013-06-13T21:41:58.563 に答える