Excel VBA - 파일 시스템 객체

2025. 3. 17. 10:29Microsoft Excel

728x90
반응형
SMALL

 

엑셀 함수 시리즈 #56: VBA 파일 시스템 객체 (FileSystemObject) - 파일 및 폴더 관리의 핵심

VBA(Visual Basic for Applications) 파일 시스템 객체(FileSystemObject)는 파일 및 폴더를 생성, 삭제, 이동, 복사 등 다양한 작업을 수행하는 데 유용한 도구입니다. 파일 시스템 객체를 사용하면 엑셀에서 파일 및 폴더를 효율적으로 관리하고 자동화된 파일 처리 시스템을 구축할 수 있습니다. 이번 글에서는 VBA 파일 시스템 객체의 기본 개념과 주요 메서드, 활용 예시를 알아보겠습니다.

반응형

1. 파일 시스템 객체란?

파일 시스템 객체는 파일 및 폴더를 다루는 다양한 메서드와 속성을 제공하는 VBA 내장 객체입니다. 파일 시스템 객체를 사용하면 파일 및 폴더를 생성, 삭제, 이동, 복사, 이름 변경 등 다양한 작업을 프로그래밍 방식으로 수행할 수 있습니다.

2. 파일 시스템 객체 생성 방법

VBA
 
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")

3. 주요 메서드

  • 파일 관련 메서드:
    • FileExists(파일경로): 파일의 존재 여부를 확인합니다.
    • CreateTextFile(파일경로, [덮어쓰기], [유니코드]): 텍스트 파일을 생성합니다.
    • OpenTextFile(파일경로, [입출력모드], [생성], [형식]): 텍스트 파일을 열고 데이터를 읽거나 씁니다.
    • DeleteFile(파일경로, [읽기전용파일삭제]): 파일을 삭제합니다.
    • CopyFile(원본파일경로, 대상파일경로, [덮어쓰기]): 파일을 복사합니다.
    • MoveFile(원본파일경로, 대상파일경로): 파일을 이동합니다.
    • GetFile(파일경로): 파일 객체를 반환합니다.
  • 폴더 관련 메서드:
    • FolderExists(폴더경로): 폴더의 존재 여부를 확인합니다.
    • CreateFolder(폴더경로): 폴더를 생성합니다.
    • DeleteFolder(폴더경로, [읽기전용폴더삭제]): 폴더를 삭제합니다.
    • CopyFolder(원본폴더경로, 대상폴더경로, [덮어쓰기]): 폴더를 복사합니다.
    • MoveFolder(원본폴더경로, 대상폴더경로): 폴더를 이동합니다.
    • GetFolder(폴더경로): 폴더 객체를 반환합니다.
  • 드라이브 관련 메서드:
    • DriveExists(드라이브명): 드라이브의 존재 여부를 확인합니다.
    • GetDrive(드라이브명): 드라이브 객체를 반환합니다.
728x90

4. 파일 시스템 객체 활용 예시

  1. 텍스트 파일 생성 및 데이터 쓰기: 텍스트 파일을 생성하고 데이터를 씁니다.
VBA
 
Sub CreateAndWriteTextFile()
    Dim fso As Object
    Dim ts As Object

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.CreateTextFile("C:\Data\test.txt", True)
    ts.WriteLine "Hello, World!"
    ts.Close

    Set ts = Nothing
    Set fso = Nothing
End Sub
  1. 폴더 생성 및 파일 복사: 폴더를 생성하고 파일을 복사합니다.
VBA
 
Sub CreateFolderAndCopyFile()
    Dim fso As Object

    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FolderExists("C:\Backup") Then
        fso.CreateFolder "C:\Backup"
    End If
    fso.CopyFile "C:\Data\test.txt", "C:\Backup\test.txt"

    Set fso = Nothing
End Sub
  1. 파일 목록 가져오기: 특정 폴더의 파일 목록을 가져와 엑셀 워크시트에 입력합니다.
VBA
 
Sub GetFileList()
    Dim fso As Object
    Dim folder As Object
    Dim file As Object
    Dim i As Integer

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder("C:\Data")

    i = 1
    For Each file In folder.Files
        Sheets("Sheet1").Cells(i, 1).Value = file.Name
        i = i + 1
    Next file

    Set file = Nothing
    Set folder = Nothing
    Set fso = Nothing
End Sub
SMALL

5. 파일 시스템 객체 사용 시 주의 사항

  • 파일 경로를 정확하게 지정해야 합니다.
  • 파일 또는 폴더가 이미 존재하는 경우 오류가 발생할 수 있습니다.
  • 파일 시스템 객체 코드를 작성하기 전에 충분한 테스트를 거쳐 오류를 최소화해야 합니다.

6. 마무리

VBA 파일 시스템 객체를 통해 엑셀에서 파일 및 폴더를 효율적으로 관리하고 자동화된 파일 처리 시스템을 구축할 수 있습니다. 다양한 파일 시스템 객체 메서드를 활용하여 파일 및 폴더 관리 능력을 향상시키세요.

728x90
반응형
LIST