检查文件是否已保存在其他文件夹中

时间:2018-01-24 09:24:19

标签: vba excel-vba excel

Dears我有这段代码检查目标文件夹中的文件.xls是否已经在ActiveWorkbook文件夹中以格式.xlsb保存。这适用于第一个文件,但循环在此之后停止,并且不会检查剩余的文件。

myFile = Dir(myPath & myExtension)

'check if the file .xls is in the current folder in format .xlsb
Do While myFile <> ""
    If Dir(Application.ActiveWorkbook.Path & "\" & Replace(myFile, ".xls", ".xlsb")) <> "" Then
        Debug.Print myFile & " is in the folder"
    Else
        Debug.Print myFile & " is not in the folder"
    End If

'next file
myFile = Dir
Loop

2 个答案:

答案 0 :(得分:0)

您尚未创建用于循环文件的数组。以下是检查文件存在的代码

Sub checkExistance()
    'setup
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("Your Folder Path Here")

    'file
    Dim myFile As String
    Dim FileName As String
    Dim FileExtension As String
    FileName = "Your File Name"
    FileExtension = ".xls"
    myFile = FileName & FileExtension

    'Loop through each file in folder
    For Each objFile In objFolder.Files
        If objFile.Name = Replace(myFile, ".xls", ".xlsb") Then
            MsgBox objFile.Name & " Ci sta"
        Else
            MsgBox objFile.Name & " Nun Ci sta"
        End If
    Next
End Sub

答案 1 :(得分:0)

另一个答案HERE上有一个函数可以返回文件夹中的文件数组。如果你抓住了,你可以得到你需要的东西:

Dim myFile As Variant
Dim folder_containing_xls As String
Dim folder_containing_xlsb As String

folder_containing_xls = "FOLDER PATH HERE"
folder_containing_xlsb = Application.ActiveWorkbook.Path 'or "OTHER OR SAME FOLDER PATH HERE"

If Right(folder_containing_xls, 1) <> "\" Then folder_containing_xls = folder_containing_xls & "\"
If Right(folder_containing_xlsb, 1) <> "\" Then folder_containing_xlsb = folder_containing_xlsb & "\"

For Each myFile In listfiles(folder_containing_xls)
    If myFile Like "*.xls" Then
        If Dir(folder_containing_xlsb & Replace(myFile, ".xls", ".xlsb")) <> "" Then
            Debug.Print myFile & " is in the folder"
        Else
            Debug.Print myFile & " is not in the folder"
        End If
    End If
Next

如果您要查找两个文件位于同一个文件夹中,或者它们位于不同的文件夹中,我就无法解决问题,因此我已将其构建为处理其中任何一个文件。