[엑셀/VBA] 특정 경로에 있는 파일을 다른 폴더에 복사하는 방법.FileCopy
엑셀에서 데이터가 담긴 파일 외부에 만들고 그 파일을 다른 폴더에 복사해야하는 상황이 발생했습니다.
조금 더 자세한 프로세스를 적어 보자면,
- 엑셀에서 데이터를 조회해 시트에 표시
- 시트에 표시된 데이터를 알맞은 형식으로 만들어 TXT 형식의 파일로 저장함
- 해당 TXT 파일을 다른 경로에 복사에 최종 작업 종료
사실 위 과정에서 2번까지는 VBA 코드로 진행하고, 마지막 작업은 윈도우 탐색기에서 그냥 복사 붙여넣기를 했었는데, 이게 파일 개수가 많아지면서 점점 귀찮아지더라구요.
그래서 VBA 에서 이 작업을 간단하게 할 수 있는 방법을 찾아보니 역시나 있었습니다.
아래는 위 파일 복사 작업을 구현한 전체 VBA 코드는 아래와 같습니다.
Private Sub cmd_upload_Click()
Dim sourcePath As String
Dim targetPath As String
sourcePath = ThisWorkbook.Path & "\" & Sheet0.Cells(2, 2)
targetPath = "\\192.168.0.100\send\upload\" & Sheet0.Cells(2, 2)
FileCopy sourcePath, targetPath
MsgBox "업로드 완료"
End Sub
코드 자체는 굉장히 간단하죠?
먼저 sourcePath 와 targetPath 라는 String 형식으로 된 변수를 만들어주고, sourcePath 에는 복사할 대상 파일의 경로와 파일명을, targetPath 에는 붙여넣기 할 대상 경로와 파일명을 적어줍니다.
저는 복사 대상 파일을 엑셀과 같은 경로에 만들기 때문에 sourcePath 변수에 현재 엑셀 파일의 경로를 가져오는 ThisWorkbook.Path 에 역슬래시(\)를 붙이고 파일명이 있는 셀(Sheet0.Cells(2, 2))을 가져와 담았습니다.
복사 대상이 되는 경로 변수(targetPath)에도 마찬가지 방법으로 경로 + 파일명을 지정해주었습니다.
이제 내장 함수인 FileCopy 에 복사할 파일 경로와 붙여넣기 파일 경로를 차례로 넣어주면 간단하게 파일 복사는 완료됩니다.
여기서 몇 가지 주의할 사항은 아래와 같습니다.
sourcePath에서 지정된 경로의 파일이 실제 해당 폴더에 존재하지 않을 경우 오류가 발생합니다.targetPath에서 지정된 경로의 파일이 이미 존재하더라도, 특별한 오류나 알림이 없이 덮어쓰기가 되어 버리니 주의해야 합니다. 만약 덮어쓰기가 위험하다면, 미리 해당 경로에 파일이 존재하는지 확인한 후 사용자가 선택할 수 있도록 메시지 박스를 띄워주는게 좋을 것 같습니다.
복붙할 파일 개수가 많아지면 또 다른 방법을 찾아야겠지만, 일단 저 방법으로도 충분히 편리하네요.
끝.