>

친애하는 대상 폴더의 .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

  • 답변 # 1

    파일을 루핑하기위한 배열을 만들지 않았습니다. 다음은 파일 존재 여부를 확인하는 코드입니다.

    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
    
    

  • 답변 # 2

    다른 답변에는 폴더 내의 파일 배열을 반환하는 함수가 있습니다. 당신이 그것을 잡으면, 당신은 필요한 것을 얻을 수 있습니다 :

    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
    
    

    두 파일이 모두 같은 폴더에 있거나 다른 폴더에 있으면 두 파일 모두를 처리 할 수 ​​없었습니다.

관련 자료

  • 이전 sql - 테이블에 값이 존재하는지 비교하는 방법
  • 다음 vuejs2 - axios로 api rest 호출을하기 위해 nuxt에 헤더 추가