Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 排除某些文件类型的VBA语法_Excel_Vba - Fatal编程技术网

Excel 排除某些文件类型的VBA语法

Excel 排除某些文件类型的VBA语法,excel,vba,Excel,Vba,我正在尝试创建一个宏,该宏将列出网络文件夹中的所有excel电子表格,但忽略excel在电子表格打开时创建的任何临时文件(即:~$filename.xlsx)。下面的代码非常有效,但也会拾取这些临时文件 If (objFile) Like ("*.xlsx") Then Do something here End If Next objFile 我尝试过使用If-Not语句,但在使其工作时遇到了困难。我是VBA新手,可能是我的语法根本不正

我正在尝试创建一个宏,该宏将列出网络文件夹中的所有excel电子表格,但忽略excel在电子表格打开时创建的任何临时文件(即:~$filename.xlsx)。下面的代码非常有效,但也会拾取这些临时文件

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

我尝试过使用If-Not语句,但在使其工作时遇到了困难。我是VBA新手,可能是我的语法根本不正确。有没有一种方法可以指定所有.xlsx文件,同时忽略任何临时的~$*.xlsx文件?

我认为最简单的方法就是在
If
语句中添加一个额外的子句:

    If objFile Like "*.xlsx" And Left(objFile, 2) <> "~$" Then
        Do something here
    End If
Next objFile
If (objFile) Like ("[!~]*.xlsx") Then
    'Do something here
End If
如果objFile像“*.xlsx”并向左(objFile,2)“~$”那么
在这里做点什么
如果结束
下一个objFile

只需在
语句中排除以
~
开头的字符串,如
语句:

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

您可以使用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
我将文件名存储在一个集合中,但显然,您可以将它们存储在数组中或任何最适合您需要的东西中

问候,,
silkcode

UPDATE:有些问题是由于excel没有看到临时文件前面的“~”造成的。我可以通过排除以*$开头的文件来创建一个“过滤器”,现在它可以正常工作了。谢谢大家的回答!