2017-10-30 11 views
0

FileSystemObjectを使用してファイルを開こうとしていますが、実行しようとしてもシステムは何もしません。表示されませんデバッグ、ランタイムエラーなし、コンパイルされません。それはそのままです。 参考文献の「MS Scripting Runtime」もチェックしました。 以下は、私はこのために使用したコードです:fsoを使用してファイルを開くことができません

Sub fsoobject() 
Dim fso As New FileSystemObject, f As Folder, sf As Folder, myFile As File 
Set f = fso.GetFolder("C:\Users\jpmehta\Desktop") 

For Each sf In f.SubFolders 
    For Each mySubFolder In myFolder.SubFolders 
     For Each myFile In mySubFolder.Files 
      If myFile.Name Like "Done" Then 
       MsgBox myFile.Name 
       Exit For 
      End If 
     Next 

     MsgBox "Else" 
    Next 
Next 

End Sub 
+2

'' sf' – Rory

+0

とmyFolder'を交換してくださいまだ起こっていない:( – JayyM

+1

唯一のものは、 "完了"のような "完了"です - 恐らくワイルドカードが必要です – SJR

答えて

0
Sub fsoobject() 
Dim fso As New FileSystemObject 
dim f As Folder 
dim sf As Folder 
dim mySubFolder as folder 
dim myFile As File 
Set f = fso.GetFolder("C:\Users\jpmehta\Desktop") 
dim found as boolean 'flag if found 
For Each sf In f.SubFolders 
    For Each mySubFolder In myFolder.SubFolders 
     For Each myFile In mySubFolder.Files 
      If myFile.Name Like "Done*.*" Then 
        MsgBox mysubfolder.path & "\" & myFile.Name 
        found = true 'we found it 
        Exit For 'so stop 
       End If 
     Next myFile 
     if found then exit for 'cascade exit 
    Next MySubFolder 
    if found then exit for 'and again 
next sf 

End Sub 
0
Sub fsoobject() 
Dim fso As New FileSystemObject, f As Folder, sf As Folder, myFile As File 
Set f = fso.GetFolder("C:\Users\jpmehta\Desktop") 

'For Each sf In f.SubFolders 
' For Each mySubFolder In sf.SubFolders 
'  For Each myFile In mySubFolder.Files 
'   If myFile.Name Like "Done" Then 
'    MsgBox myFile.Name 
'    Exit For 
'   End If 
'  Next 
' 
'  MsgBox "Else" 
' Next 
'Next 

    Dim File 
    For Each File In f.Files 
     If File.Name = "Done.PNG" Then 
      Call Shell("Explorer.exe """ & File.Path & """", vbNormalFocus) 
      Exit For 
     End If 
    Next 

End Sub 

まあ、私は少しを検索し、ファイルを開くには、このキーワード「シェル」を見つけました。このコードを適用すると、今度は正常に実行されます。

+0

[shell is faster] (https://stackoverflow.com/q/26262962/7690982)よりもfsoです。 – danieltakeshi

0

このコードは私のために働きます。クリアとシンプル:

Sub fsoobject() 
Dim fso As New FileSystemObject, f As Folder, sf As Folder, ssf As Folder, 
myFile As File 
Set f = fso.GetFolder("C:\Users\tomek\Desktop") 

For Each sf In f.SubFolders 
    Set ssf = sf 

    For Each myFile In ssf.Files 
     If myFile.Name Like "Done" Then 
      Debug.Print myFile.Name 
      Exit For 
     End If 

    Debug.Print "Else:" & myFile.Name 

    Next 
Next 

End Sub 
  1. セットsubsubfolder(セットSSF = SF)
  2. 私はループをチェックするためのDebug.Printを使用することをお勧めしますVBE
関連する問題