2017-02-03 248 views
0

我想創建一個宏,它將列出網絡文件夾中的所有excel電子表格,但忽略excel在電子表格打開時創建的任何臨時文件(即:〜$ filename.xlsx)下面的代碼很好用,但是它們也會提取這些臨時文件。VBA語法排除某些文件類型

If (objFile) Like ("*.xlsx") Then 
      Do something here 
     End If 
     Next objFile 

我已經嘗試過使用If Not語句,但是無法使其工作。我是VBA的新手,可能是因爲我的語法簡單。有沒有辦法指定所有.xlsx文件,同時忽略任何臨時〜$ *。xlsx文件?

+0

更新:原來,有些問題是用Excel沒有看到套管臨時文件前面的「〜」。我能夠通過排除以* $開頭的文件來製作「過濾器」,而現在正在運行。謝謝大家回答! –

回答

0

只排除開始~中的字串Like聲明:

If (objFile) Like ("[!~]*.xlsx") Then 
    'Do something here 
End If 
0

我認爲最簡單的方式就是一個額外的條款添加到If聲明:

If objFile Like "*.xlsx" And Left(objFile, 2) <> "~$" Then 
     Do something here 
    End If 
Next objFile 
0

你可以這樣做使用Dir-見下面的代碼:

Public Sub sampleCode() 
Dim sourceFolderPath As String 
Dim dirStr As String 
Dim fileList As Collection 

Set fileList = New Collection 
With Application.FileDialog(msoFileDialogFolderPicker) 
    .Title = "Select the folder that contains the pictures." 
    .Show 
    sourceFolderPath = .SelectedItems(1) & "\" 
End With 

dirStr = Dir(sourceFolderPath & "*.xlsx") 
Do Until dirStr = "" 
    fileList.Add (dirStr) 
    dirStr = Dir 
Loop 

End Sub 

我存儲在一個集合中的文件名,但很明顯,你可以將它們保存在一個數組或什麼最適合您的需求..

問候, TheSilkCode