2017-11-11 5 views
0

나는 VBA에 상당히 익숙하며이 프로그램에 대한 모든 도움을 매우 높이 평가합니다!하위 폴더의 특정 파일을 대상 폴더에 복사하는 방법은 무엇입니까? (Excel VBA)

이 프로그램의 목표는 모든 특정 파일 형식 (.pdf)을 네트워크에서 바탕 화면의 폴더로 복사하는 것입니다. 그러나 (.pdf) 파일은 각 폴더 하위 폴더에 있습니다.

사용자가 폴더를 정의하려면 (많은 하위 폴더가 있음) 프로그램에서 각 하위 폴더의 각 .pdf를 대상 폴더로 복사하고 싶습니다.

이것은 인터넷 검색에서 지금까지 얻은 것입니다. 내가 그것을 실행하면

Sub Copy_test2() 
Dim FSO As Object, fld As Object 
Dim fsoFile As Object 
Dim fsoFol As Object 

    FromPath = "D:\Users\A\Desktop\test1" 'user will define this 
    ToPath = "D:\Users\A\Desktop\test2" 'this will be the folder on the desktop 

    If Right(FromPath, 1) <> "\" Then 
     FromPath = FromPath & "\" 
    End If 

Set FSO = CreateObject(“Scripting.FileSystemObject”) 

Set fld = FSO.GetFolder(FromPath) 

If FSO.FolderExists(fld) Then 
    For Each fsoFol In FSO.GetFolder(FromPath).subfolders 
     For Each fsoFile In fsoFol.Files 
      If Right(fsoFile, 3) = “pdf” Then 
       fsoFile.Copy ToPath 
      End If 
     Next 
    Next 
End If 

End Sub 

, 내가 얻을 : 런타임 오류 '424'개체

Set FSO = CreateObject(“Scripting.FileSystemObject”) 

가이 코드에 대한 올바른 방법을 것인가에 필요한? 아니면이 작업을 수행하기위한 대체 방법이 있습니까?

감사합니다.

답변

0

항상 모듈을 Option Explicit으로 시작하십시오. 이렇게하면 모든 변수를 선언해야하므로 좋은 결과를 얻게됩니다.

그런 다음 실행하기 전에 항상 코드를 컴파일하십시오. 이것은 디버그 메뉴 -> 컴파일에서 수행 할 수 있습니다. 귀하의 경우, 컴파일은 두 문자열 변수가 선언되지 않았기 때문에 실패합니다 (모듈 수준에서 선언되지 않은 경우). ", ie"및 "차이가 아닌 큰 따옴표를 사용하기 때문에 컴파일이 실패합니다. 차이점을 확인 하시겠습니까? VBA는 그 (것)들을 좋아하지 않는다 :-)

+0

제안을 주셔서 감사합니다! 나는 이것을 디버깅하려고 노력할 것입니다. – ducky