FileSystemObject
컴퓨터의 파일 시스템에 대한 액세스를 제공합니다.
FileSystemObject 개체를 생성하는 방법은 다음과 같습니다.
Early Binding
1. VBE(ALT+F11)를 열어서 "도구(T)" 메뉴 -> "참조(R)"를 선택합니다.
2. "Microsoft Scripting Runtime" 또는 "Windows Script Host Object Model"을 찾아서 선택합니다.
3. 확인 버튼을 클릭하여 라이브러리를 추가합니다.
이후에는 아래와 같은 방식으로 추가하여 사용하실 수 있습니다.
Dim fso As New Scripting.FileSystemObject
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
Early Binding을 이용하여 작성한 코드의 예제입니다.
Sub ExampleEarlyBinding()
Dim fso As Scripting.FileSystemObject
Dim folderPath As String
Dim fileName As String
Dim fullPath As String
' Scripting.FileSystemObject 생성
Set fso = New Scripting.FileSystemObject
' 폴더 경로와 파일 이름 지정
folderPath = "C:\Users\JohnDoe\Documents"
fileName = "report.xlsx"
' BuildPath 메서드를 사용하여 폴더 경로와 파일 이름을 결합
fullPath = fso.BuildPath(folderPath, fileName)
' 결합된 전체 경로 출력
Debug.Print "전체 경로: " & fullPath
' 객체 해제
Set fso = Nothing
End Sub
Late Binding
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Late Binding을 이용하여 작성한 코드의 예제입니다.
Sub ExampleLateBinding()
Dim fso As Object
Dim folderPath As String
Dim fileName As String
Dim fullPath As String
' Late Binding 방식으로 Scripting.FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 폴더 경로와 파일 이름 지정
folderPath = "C:\Users\JohnDoe\Documents"
fileName = "report.xlsx"
' BuildPath 메서드를 사용하여 폴더 경로와 파일 이름을 결합
fullPath = fso.BuildPath(folderPath, fileName)
' 결합된 전체 경로 출력
Debug.Print "전체 경로: " & fullPath
' 개체 해제
Set fso = Nothing
End Sub
Syntax
Scripting.FileSystemObject
Property
Drives : 컴퓨터의 모든 드라이브 개체 모음을 반환합니다.
Drives 속성
로컬 컴퓨터에서 사용 가능한 모든 드라이브 개체로 구성된 Drives 컬렉션을 반환합니다.
Syntax
object.Drives
object는 항상 FileSystemObject입니다.
비고
Drives 컬렉션에서 이동식 매체 드라이브를 보이게 하기 위해 그 드라이브에 매체를 삽입할 필요는 없습니다.
아래 코드에서 보여주듯이 For Each...Next 구조를 사용하면 Drives 컬렉션의 구성원을 반복할 수 있습니다.
Sub ListDrivesInfo()
Dim fso As Object
Dim drives As Object
Dim drive As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set drives = fso.drives
For Each drive In drives
' 드라이브 정보 출력
MsgBox "드라이브 문자: " & drive.DriveLetter & vbNewLine & _
"드라이브 타입: " & drive.DriveType & vbNewLine & _
"드라이브 이름: " & drive.VolumeName & vbNewLine & _
"총 공간 (바이트): " & drive.TotalSize & vbNewLine & _
"사용 가능한 공간 (바이트): " & drive.FreeSpace, _
vbInformation, "드라이브 정보"
Next drive
' 개체 정리 및 해제
Set drives = Nothing
Set fso = Nothing
End Sub
Sub CallListDrivesInfo()
' ListDrivesInfo 서브루틴을 호출합니다.
ListDrivesInfo
End Sub
Method
BuildPath : 기존 경로에 이름을 추가합니다.
CopyFolder : 하나 이상의 폴더를 한 위치에서 다른 위치로 복사합니다.
CreateFolder : 새 폴더를 만듭니다.
CreateTextFile : 텍스트 파일을 만들고 파일에서 읽거나 쓰는 데 사용할 수 있는 TextStream 객체를 반환합니다.
DeleteFile : 하나 이상의 지정된 파일을 삭제합니다.
DeleteFolder : 하나 이상의 지정된 폴더를 삭제합니다.
DriveExists : 지정한 드라이브가 있는지 확인합니다.
FileExists : 지정한 파일이 있는지 확인합니다.
FolderExists : 지정한 폴더가 있는지 확인합니다.
GetAbsolutePathName : 지정한 경로에 대해 드라이브 루트에서 전체 경로를 반환합니다.
GetBaseName : 지정한 파일 또는 폴더의 기본 이름을 반환합니다.
GetDrive : 지정한 경로의 드라이브에 해당하는 드라이브 개체를 반환합니다.
GetDriveName : 지정한 경로의 드라이브 이름을 반환합니다.
GetExtensionName : 지정한 경로에서 마지막 구성 요소의 파일 확장자 이름을 반환합니다.
GetFile : 지정한 경로에 대한 파일 개체를 반환합니다.
GetFileName : 지정한 경로에서 마지막 구성 요소의 파일 이름 또는 폴더 이름을 반환합니다.
GetFolder : 지정한 경로에 대한 폴더 개체를 반환합니다.
GetParentFolderName : 지정된 경로에서 마지막 컴포넌트의 상위 폴더 이름을 반환합니다.
GetSpecialFolder : 일부 Windows 특수 폴더의 경로를 반환합니다.
GetTempName : 임의로 생성된 임시 파일 또는 폴더를 반환합니다.
Move : 지정된 파일 또는 폴더를 한 위치에서 다른 위치로 이동합니다.
MoveFile : 하나 이상의 파일을 한 위치에서 다른 위치로 이동합니다.
MoveFolder : 하나 이상의 폴더를 한 위치에서 다른 위치로 이동합니다.
OpenAsTextStream : 지정된 파일을 열고 파일에서 읽거나 쓰거나 파일에 추가하는 데 사용할 수 있는 TextStream 개체를 반환합니다.
OpenTextFile : 파일을 열고 파일에 액세스하는 데 사용할 수 있는 TextStream 개체를 반환합니다.
WriteLine : 지정된 문자열과 새 줄 문자를 TextStream 파일에 씁니다.
------------------------------------------------------------------------------------------------------------------------------------
BuildPath Method
폴더 경로와 폴더 또는 파일 이름을 결합하여 유효한 경로 구분 기호를 사용한 조합을 반환합니다.
Syntax
object.BuildPath (path, name)
object : 필수입니다.FileSystemObject의 이름입니다.
path : 필수입니다. 이름이 결합된 기존 경로입니다. 경로는 절대 또는 상대 경로일 수 있으며 기존 폴더를 지정할 필요는 없습니다.
name : 필수입니다. 기존 경로에 추가되는 폴더 또는 파일의 이름입니다.
비고
BuildPath 메서드는 필요한 경우에만 기존 경로와 이름 사이에 추가 경로 구분 기호를 삽입합니다.
BuildPath Method 예제 - 1 (절대경로)
Sub ExampleBuildPath()
Dim fso As Object ' Scripting.FileSystemObject
Dim folderPath As String
Dim fileName As String
Dim fullPath As String
' Scripting.FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 폴더 경로와 파일 이름 지정
folderPath = "C:\Users\JohnDoe\Documents"
fileName = "report.xlsx"
' BuildPath 메서드를 사용하여 폴더 경로와 파일 이름을 결합
fullPath = fso.BuildPath(folderPath, fileName)
' 결합된 전체 경로 출력
Debug.Print "전체 경로: " & fullPath
' 개체 해제
Set fso = Nothing
End Sub
BuildPath Method 예제 - 2 (상대경로)
Sub ExampleBuildPath()
Dim fso As Object ' Scripting.FileSystemObject
Dim folderPath As String
Dim fileName As String
Dim fullPath As String
' Scripting.FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 폴더 경로와 파일 이름 지정 (상대 경로)
folderPath = "Documents\Reports"
fileName = "report.xlsx"
' BuildPath 메서드를 사용하여 상대 경로와 파일 이름을 결합
fullPath = fso.BuildPath(folderPath, fileName)
' 결합된 전체 경로 출력
Debug.Print "전체 경로: " & fullPath
' 개체 해제
Set fso = Nothing
End Sub
BuildPath method 예제 - 3 (경로 구분기호 생략)
Sub ExampleBuildPath()
Dim fso As Object ' Scripting.FileSystemObject
Dim folderPath1 As String
Dim folderPath2 As String
Dim fullPath As String
' Scripting.FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 첫 번째 폴더 경로 지정
folderPath1 = "C:\Users\JohnDoe\Documents\"
' 두 번째 폴더 경로 지정
folderPath2 = "Reports"
' BuildPath 메서드를 사용하여 두 개의 폴더 경로를 결합
fullPath = fso.BuildPath(folderPath1, folderPath2)
' 결합된 전체 경로 출력
Debug.Print "전체 경로: " & fullPath
' 객체 해제
Set fso = Nothing
End Sub
CopyFile method
하나 이상의 파일을 한 위치에서 다른 위치로 복사합니다.
Syntax
object.CopyFile source, destination, [ overwrite ]
object : 필수입니다.FileSystemObject 의 이름입니다.
source : 필수적인 요소로 복사할 하나 이상의 파일을 지정하는 문자열로 와일드카드 문자도 포함합니다.
destination : 필수적인 요소로 원본에 있는 하나 이상의 파일을 복사해 놓을 대상 위치를 나타내는 문자열입니다. 와일드카드 문자는 사용할 수 없습니다.
overwrite : 선택적인 요소로 기존 파일에 덮어 쓸지 여부를 나타내는 부울 값입니다. True(기본값)인 경우 파일을 덮어 쓰고, False인 경우 덮어 쓰지 않습니다. 덮어 쓰기의 값과 상관없이 대상을 읽기 전용 속성으로 지정하면 CopyFile 메서드는 작동하지 않습니다.
참고
와일드카드 문자는 원본 인수의 마지막 경로 구성 요소에만 사용할 수 있습니다. 사용 예는 아래와 같습니다.
FileSystemObject.CopyFile "c:\mydocuments\letters\*.doc", "c:\tempfolder\"
그러나 아래와 같이 마지막 경로 구성 요소가 아닌 경우에는 사용할 수 없습니다.
FileSystemObject.CopyFile "c:\mydocuments\*\R1???97.xls", "c:\tempfolder"
만약 소스에 와일드카드 문자가 포함되어 있거나 대상이 경로 구분 기호(****)로 끝난다면, 대상은 일치하는 파일을 복사할 기존 폴더로 가정합니다. 그렇지 않으면 대상은 새로 생성될 파일의 이름으로 간주됩니다. 어떤 경우든 개별 파일을 복사하는 동안 세 가지 상황이 발생할 수 있습니다:
1. 대상이 존재하지 않는 경우, 소스가 해당 대상으로 복사됩니다. 이것이 일반적인 경우입니다.
Sub CopyFileExample()
Dim fso As Object
Dim SourceFile As String
Dim DestinationFile As String
' 파일 시스템 객체 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 소스 파일과 대상 파일의 경로를 지정
SourceFile = "C:\source_folder\example.txt"
DestinationFile = "C:\destination_folder\example.txt"
' 파일 복사
On Error Resume Next ' 에러가 발생해도 계속 진행
fso.CopyFile SourceFile, DestinationFile, True ' True: 대상 파일이 이미 존재하는 경우 덮어쓰기
' 복사 성공 여부 확인
If Err = 0 Then
MsgBox "파일이 성공적으로 복사되었습니다."
Else
MsgBox "파일 복사 중 오류가 발생했습니다. 오류 번호: " & Err.Number
End If
' 파일 시스템 객체 해제
Set fso = Nothing
End Sub
경로가 존재하지 않는 경우(메시지 박스 출력 대신 원래 오류로 그림을 바꿨습니다)
정상적으로 복사된 경우
2. 대상이 이미 존재하는 파일인 경우, 덮어쓰기(overwrite)가 False인 경우에는 오류가 발생합니다. 그렇지 않으면 소스가 기존 파일을 덮어쓰려고 시도합니다.
Sub CopyFileExample()
Dim fso As Object
Dim SourceFile As String
Dim DestinationFile As String
' 파일 시스템 객체 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 소스 파일과 대상 파일의 경로를 지정
SourceFile = "C:\source_folder\example.txt"
DestinationFile = "C:\destination_folder\example.txt"
' 파일 복사
On Error Resume Next ' 에러가 발생해도 계속 진행
fso.CopyFile SourceFile, DestinationFile, False ' False: 대상 파일이 이미 존재하는 경우 덮어쓰기 안함
' 복사 성공 여부 확인
If Err = 0 Then
MsgBox "파일이 성공적으로 복사되었습니다."
Else
If Err.Number = 58 Then ' 파일이 이미 존재하는 경우의 오류 번호
MsgBox "대상 파일이 이미 존재합니다. 덮어쓰기가 허용되지 않습니다."
Else
MsgBox "파일 복사 중 오류가 발생했습니다. 오류 번호: " & Err.Number
End If
End If
' 파일 시스템 객체 해제
Set fso = Nothing
End Sub
파일이 이미 존재하는 경우 아래와 같은 에러가 발생합니다.
위 예시에서는 메시지 박스로 처리했습니다.
3. 대상이 디렉토리인 경우에도 오류가 발생합니다.
또한 와일드카드 문자를 사용하여 소스가 어떤 파일과도 일치하지 않는 경우에도 오류가 발생합니다. CopyFile 메서드는 첫 번째로 발생한 오류에서 중지되며, 오류가 발생하기 이전의 변경사항을 되돌리거나 취소하지 않습니다.
새 대상 경로로 복사된 파일은 원본 파일과 동일한 파일 이름을 유지합니다. 복사된 파일의 이름을 바꾸려면 단순히 대상 경로에 새 파일 이름을 포함시키면 됩니다. 예를 들어, 아래와 같이 하면 파일이 새 위치로 복사되며 새 위치의 파일은 다른 이름을 갖게 됩니다.
FileSystemObject.CopyFile "c:\mydocuments\letters\sample.doc", "c:\tempfolder\sample_new.doc"
CopyFolder method
폴더를 한 위치에서 다른 위치로 순환적으로 복사합니다.
Syntax
object.CopyFolder source, destination, [ overwrite ]
object : 필수적인 요소로 FileSystemObject의 이름입니다.
source : 필수적인 요소로 복사할 하나 이상의 폴더를 지정하는 문자열로 와일드카드 문자도 포함합니다.
destination : 필수적인 요소로 원본에 있는 폴더와 하위 폴더를 복사해 놓을 대상 위치를 나타내는 문자열입니다. 와일드카드 문자는 사용할 수 없습니다.
overwrite : 선택적인 요소로 기존 폴더에 덮어 쓸지 여부를 나타내는 부울 값입니다. True(기본값)인 경우 파일을 덮어 쓰고, False인 경우 덮어 쓰지 않습니다.
와일드카드 문자는 원본 인수의 마지막 경로 구성 요소에만 사용할 수 있습니다. 사용 예는 아래와 같습니다.
FileSystemObject.CopyFolder "c:\mydocuments\letters\*", "c:\tempfolder\"
그러나 아래와 같이 마지막 경로 구성 요소가 아닌 경우에는 사용할 수 없습니다.
FileSystemObject.CopyFolder "c:\mydocuments\*\*", "c:\tempfolder\"
소스에 와일드카드 문자가 포함되어 있거나 대상이 경로 구분 기호(\)로 끝나는 경우, 대상은 일치하는 폴더 및 하위 폴더를 복사할 기존 폴더로 간주됩니다. 그렇지 않으면 대상은 새로 만들 폴더의 이름으로 간주됩니다. 두 경우 모두 개별 폴더가 복사될 때 네 가지 일이 발생할 수 있습니다:
1. 대상 폴더가 존재하지 않으면 소스 폴더와 모든 콘텐츠가 복사됩니다. 이것이 일반적인 경우입니다.
2. 대상이 기존 파일인 경우 오류가 발생합니다.
3. 대상이 디렉터리인 경우 폴더와 모든 내용을 복사하려고 시도합니다. 소스에 포함된 파일이 대상에 이미 있는 경우 덮어쓰기가 False인 경우 오류가 발생합니다. 그렇지 않으면 기존 파일 위에 파일을 복사하려고 시도합니다.
4. 대상 디렉터리가 읽기 전용 디렉터리인 경우 기존 읽기 전용 파일을 해당 디렉터리에 복사하려고 시도하고 덮어쓰기가 False인 경우 오류가 발생합니다.
와일드카드 문자를 사용하는 소스가 어떤 폴더와도 일치하지 않는 경우에도 오류가 발생합니다.
CopyFolder 메서드는 첫 번째 오류가 발생하면 중지됩니다. 오류가 발생하기 전에 변경한 내용을 롤백하려고 시도하지 않습니다.
CopyFolder 예제 코드 - 1
Sub CopyFolderExample()
Dim fso As Object
Dim SourceFolder As String
Dim DestinationFolder As String
' 파일 시스템 객체 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 소스 폴더와 대상 폴더의 경로를 지정
SourceFolder = "C:\source_folder"
DestinationFolder = "C:\destination_folder"
' 폴더 복사
On Error Resume Next ' 에러가 발생해도 계속 진행
fso.CopyFolder SourceFolder, DestinationFolder, False ' False: 대상 폴더가 이미 존재하는 경우 덮어쓰기 안함
' 복사 성공 여부 확인
If Err = 0 Then
MsgBox "폴더가 성공적으로 복사되었습니다."
ElseIf Err.Number = 58 Then
MsgBox "대상 폴더가 이미 존재합니다. 덮어쓰기가 허용되지 않습니다."
Else
MsgBox "폴더 복사 중 오류가 발생했습니다. 오류 번호: " & Err.Number
End If
' 파일 시스템 개체 해제
Set fso = Nothing
End Sub
CopyFolder 예제 코드 - 2
Sub CopyFolderExampleWithOverwrite()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim sourceFolder As String
Dim destinationFolder As String
Dim overwriteExistingFiles As Boolean
' 소스 폴더와 대상 폴더의 경로
sourceFolder = "D:\SourceFolder"
destinationFolder = "D:\DestinationFolder"
overwriteExistingFiles = False ' True로 변경하여 기존 파일 덮어쓰기 가능
' 소스 폴더가 존재하는지 확인합니다.
If Not fso.FolderExists(sourceFolder) Then
MsgBox "소스 폴더가 존재하지 않습니다.", vbExclamation
Exit Sub
End If
' 소스 폴더와 내용물을 대상 폴더로 복사합니다.
fso.CopyFolder sourceFolder, destinationFolder, overwriteExistingFiles
' 성공 메시지를 표시합니다.
MsgBox "폴더 및 내용물이 성공적으로 복사되었습니다!", vbInformation
End Sub
대상 폴더가 존재하고 덮어쓰기 옵션이 False일 경우 아래와 같이 에러가 납니다.
CopyFolder 예제 코드 - 3
Sub CopyFolderExampleWithOverwrite_Korean()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim sourceFolder As String
Dim destinationFolder As String
Dim overwriteExistingFiles As Boolean
' 소스 폴더와 대상 폴더의 경로
sourceFolder = "D:\SourceFolder"
destinationFolder = "D:\DestinationFolder"
overwriteExistingFiles = False ' False로 설정 시, 대상 폴더에 동일한 이름의 폴더가 이미 존재하면 복사 중지
' 소스 폴더가 존재하는지 확인합니다.
If Not fso.FolderExists(sourceFolder) Then
MsgBox "소스 폴더가 존재하지 않습니다.", vbExclamation
Exit Sub
End If
' 대상 폴더가 존재하는지 확인합니다.
If Not fso.FolderExists(destinationFolder) Then
' 대상 폴더가 없으면 자동으로 생성됩니다.
fso.CopyFolder sourceFolder, destinationFolder, overwriteExistingFiles
' 성공 메시지를 표시합니다.
MsgBox "폴더 및 내용물이 성공적으로 복사되었습니다!", vbInformation
Else
' 대상 폴더가 이미 존재하는 경우, 기존 폴더를 덮어쓰는 옵션이 아니므로 복사 중지
MsgBox "대상 폴더에 동일한 이름의 폴더가 이미 존재하여 복사할 수 없습니다.", vbExclamation
End If
End Sub
CreateFolder method
폴더를 만듭니다.
Syntax
object.CreateFolder (foldername)
CreateFolder 메서드 구문은 아래 요소로 구성됩니다.
object : 필수입니다.FileSystemObject의 이름입니다.
foldername : 필수입니다. 만들 폴더를 식별하는 문자열 표현식입니다.
비고
지정한 폴더가 이미 있는 경우 오류가 발생합니다.
예제 코드
Sub CreateFolderExample()
Dim fso As Object ' FileSystemObject
Dim folderPath As String
' FileSystemObject 개체 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 새로 생성할 폴더의 경로 설정
folderPath = "D:\MyNewFolder"
fso.CreateFolder folderPath
Set fso = Nothing
End Sub
폴더가 존재하면 아래와 같이 에러가 납니다.
File already exists (Error 58)
Office VBA reference topic
learn.microsoft.com
오류를 방지하려면 아래와 같이 처리합니다.(여러 방법중 하나)
Sub CreateFolderExample()
Dim fso As Object ' FileSystemObject
Dim folderPath As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 새로 생성할 폴더의 경로 설정
folderPath = "D:\MyNewFolder"
' 에러 처리
On Error Resume Next
' 폴더 생성 시도
fso.CreateFolder folderPath
' 에러 정보 확인
If Err.Number <> 0 Then
MsgBox "폴더 생성 중 에러가 발생했습니다: " & Err.Description
Else
MsgBox "폴더가 생성되었습니다: " & folderPath
End If
' 에러 처리 초기화
On Error GoTo 0
' 파일 시스템 개체 해제
Set fso = Nothing
End Sub
Sub CreateFolderExample()
Dim FSO As Object
Dim FolderPath As String
' 폴더 경로 설정
FolderPath = "D:\MyNewFolder"
' FSO 개체 생성
Set FSO = CreateObject("Scripting.FileSystemObject")
' 폴더 생성
If Not FSO.FolderExists(FolderPath) Then
FSO.CreateFolder FolderPath
MsgBox "폴더가 생성되었습니다: " & FolderPath
Else
MsgBox "이미 폴더가 존재합니다: " & FolderPath
End If
' FSO 개체 해제
Set FSO = Nothing
End Sub
CreateTextfile method
지정한 파일 이름을 만들고, 그 파일을 읽거나 쓰는 데 사용될 수 있는 TextStream 개체를 반환합니다.
Syntax
object.CreateTextFile (filename, [ overwrite, [ unicode ]])
CreateTextFile 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject 또는 Folder 개체의 이름입니다.
filename : 필수적인 요소로 만들 파일을 식별하는 문자식입니다.
overwrite : 선택적인 요소로 기존 파일을 덮어 쓸지 여부를 나타내는 부울 값입니다. True인 경우 파일을 덮어 쓰고 False인 경우 덮어 쓰지 않습니다. 생략하면 기존 파일을 덮어 쓰지 않습니다.
unicode : 선택적인 요소로 Unicode 파일을 만들지 또는 ASCII 파일을 만들지 여부를 나타내는 부울 값입니다. True인 경우 Unicode 파일을 만들고 False인 경우 ASCII 파일을 만듭니다. 생략하면 ASCII 파일로 간주됩니다.
비고
다음 코드는 CreateTextFile 메서드를 사용하여 텍스트 파일을 만들고 여는 방법을 보여줍니다. 이미 존재하는 파일명에 대해 overwrite 인수가 False이거나 제공되지 않으면 오류가 발생합니다.
Sub CreateAfile
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\testfile.txt", True)
a.WriteLine("This is a test.")
a.Close
End Sub
Sub CreateTextFileExample()
Dim FSO As Object
Dim TextFile As Object
Dim FilePath As String
Dim FileContent As String
' 파일 경로 및 내용 설정
FilePath = "D:\example.txt"
FileContent = "This is the content of the text file."
' FSO 객체 생성
Set FSO = CreateObject("Scripting.FileSystemObject")
' 텍스트 파일 생성
Set TextFile = FSO.CreateTextFile(FilePath, True) ' True: 덮어쓰기 모드
' 파일에 내용 작성
TextFile.Write FileContent
' 파일 닫기
TextFile.Close
' FSO 객체 해제
Set FSO = Nothing
MsgBox "텍스트 파일이 생성되었습니다: " & FilePath
End Sub
폴더가 없다면 아래와 같은 에러가 납니다.
overwrite 인수가 False인 경우 파일이 존재한다면 에러가 납니다.
DeleteFile method
지정한 파일을 삭제합니다.
Syntax
object.DeleteFile filespec, [ force ]
DeleteFile 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
filespec : 삭제할 파일의 이름입니다. 마지막 경로 구성 요소에 와일드카드 문자를 포함할 수 있습니다.
force : 선택적인 요소로 읽기 전용 속성의 파일이나 폴더를 삭제할 경우 True, 그렇지 않으면 False(기본값)인 부울 값입니다.
비고
일치하는 파일이 없으면 오류가 발생합니다. DeleteFile 메서드는 오류를 처음 만날 때 중지됩니다. 오류가 발생하기 전에 바꾼 사항을 밀어내거나 원래대로 되돌릴 수 없습니다.
Sub DeleteFileExample()
Dim FSO As Object
Dim FilePath As String
' 삭제할 파일 경로 설정
FilePath = "D:\example.txt"
' FSO 객체 생성
Set FSO = CreateObject("Scripting.FileSystemObject")
' 파일 삭제
FSO.DeleteFile FilePath
' FSO 객체 해제
Set FSO = Nothing
End Sub
파일이 없다면 오류가 납니다.
아래 코드는 파일이 없으면 오류대신 메시지를 출력합니다.
Sub DeleteFileExample()
Dim FSO As Object
Dim FilePath As String
' 삭제할 파일 경로 설정
FilePath = "D:\example.txt"
' FSO 객체 생성
Set FSO = CreateObject("Scripting.FileSystemObject")
' 파일 삭제
If FSO.FileExists(FilePath) Then
FSO.DeleteFile FilePath
MsgBox "파일이 삭제되었습니다: " & FilePath
Else
MsgBox "파일이 존재하지 않습니다: " & FilePath
End If
' FSO 객체 해제
Set FSO = Nothing
End Sub
DeleteFolder method
지정한 폴더와 그 폴더의 내용을 삭제합니다.
Syntax
object.DeleteFolder folderspec, [ force ]
DeleteFolder 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
folderspec : 삭제할 폴더의 이름입니다. 마지막 경로 구성 요소에 와일드카드 문자를 포함할 수 있습니다.
force : 선택적인 요소로 읽기 전용 속성의 파일이나 폴더를 삭제할 경우 True, 그렇지 않으면 False(기본값)인 부울 값입니다.
비고
DeleteFolder 메서드에서는 폴더의 내용 유무를 구분하지 않습니다. 따라서 지정한 폴더는 그 내용의 유무에 상관 없이 삭제됩니다.
일치하는 폴더가 없으면 오류가 발생합니다. DeleteFolder 메서드는 오류를 처음 만날 때 중지됩니다. 오류가 발생하기 전에 바꾼 사항을 밀어내거나 원래대로 되돌릴 수 없습니다.
다음 코드는 DeleteFolder 메서드 사용법을 보여줍니다.
Sub DeleteFolder(folderPath As String)
Dim fso As Object
' CreateObject를 사용하여 FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 폴더 삭제
If fso.FolderExists(folderPath) Then
fso.DeleteFolder folderPath
Else
MsgBox "지정된 폴더가 존재하지 않습니다.", vbExclamation, "폴더 삭제"
End If
' 개체 정리 및 해제
Set fso = Nothing
End Sub
Sub Main()
Dim folderPath As String
' 삭제할 폴더 경로를 지정합니다.
folderPath = "D:\MyNewFolder" ' 삭제할 폴더 경로를 변경하세요
' 폴더 삭제 기능을 호출합니다.
DeleteFolder folderPath
End Sub
DriveExists method
지정한 드라이브가 있으면 True를, 그렇지 않으면 False를 반환합니다.
Syntax
object.DriveExists (drivespec)
DriveExists 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
drivespec : 필수적인 요소로 드라이브 문자나 완전하게 규정된 경로입니다.
비고
휴대용 매체를 가지는 드라이브에 존재하는 매체가 없을지라도 DriveExists 메서드는 True를 반환합니다. Drive 개체의 IsReady 속성을 사용하면 드라이브가 준비되어 있는지를 결정합니다.
다음 코드는 DriveExists 메서드 사용법을 보여줍니다.
Function DriveExists(driveLetter As String) As Boolean
Dim fso As Object
' CreateObject를 사용하여 FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 드라이브 존재 여부 확인
DriveExists = fso.DriveExists(driveLetter)
' 객체 정리 및 해제
Set fso = Nothing
End Function
Sub Main()
Dim driveLetter As String
Dim existsMsg As String
' 확인할 드라이브 문자를 지정합니다.
driveLetter = "C:" ' 확인할 드라이브 문자를 변경하세요
' 드라이브 존재 여부 확인 기능을 호출합니다.
If DriveExists(driveLetter) Then
existsMsg = driveLetter & " 드라이브가 존재합니다."
Else
existsMsg = driveLetter & " 드라이브가 존재하지 않습니다."
End If
MsgBox existsMsg, vbInformation, "드라이브 존재 여부 확인"
End Sub
다음 코드는 지정된 드라이브 문자로부터 드라이브 정보를 확인하고 메시지 박스에 관련 정보를 표시하는 예제입니다.
Function GetDriveInfo(driveLetter As String) As String
Dim fso As Object
Dim drive As Object
' CreateObject를 사용하여 FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 드라이브 존재 여부 확인
If fso.DriveExists(driveLetter) Then
Set drive = fso.GetDrive(driveLetter)
' 드라이브 정보 생성
With drive
GetDriveInfo = "드라이브 문자: " & .driveLetter & vbNewLine & _
"드라이브 타입: " & .DriveType & vbNewLine & _
"드라이브 이름: " & .VolumeName & vbNewLine & _
"총 공간 (바이트): " & .TotalSize & vbNewLine & _
"사용 가능한 공간 (바이트): " & .FreeSpace
End With
Else
GetDriveInfo = "드라이브가 존재하지 않습니다."
End If
' 개체 정리 및 해제
Set drive = Nothing
Set fso = Nothing
End Function
Sub Main()
Dim driveLetter As String
Dim infoMsg As String
' 확인할 드라이브 문자를 지정합니다.
driveLetter = "C:" ' 확인할 드라이브 문자를 변경하세요
' 드라이브 정보 확인 기능을 호출합니다.
infoMsg = GetDriveInfo(driveLetter)
MsgBox infoMsg, vbInformation, "드라이브 정보 확인"
End Sub
FileExists method
지정한 파일이 있으면 True를, 그렇지 않으면 False를 반환합니다.
Syntax
object.FileExists (filespec)
FileExists 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
filespec : 필수적인 요소로 그 존재 여부를 결정할 파일 이름입니다. 현재 폴더에 없을 수도 있는 파일인 경우 절대 경로나 상대 경로에 상관없이 완전한 파일 경로를 지정해야 합니다.
아래 예제는 FileExists 메서드 사용법을 보여줍니다.
Function CheckFileExists(filePath As String) As Boolean
Dim fso As Object
' CreateObject를 사용하여 FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일 존재 여부 확인
CheckFileExists = fso.FileExists(filePath)
' 개체 정리 및 해제
Set fso = Nothing
End Function
Sub Main()
Dim filePath As String
Dim resultMsg As String
' 확인할 파일 경로를 지정합니다.
filePath = "C:\Test\example.txt"
' 파일 존재 여부 확인 기능을 호출합니다.
If CheckFileExists(filePath) Then
resultMsg = "파일이 존재합니다."
Else
resultMsg = "파일이 존재하지 않습니다."
End If
MsgBox resultMsg, vbInformation, "파일 존재 여부 확인"
End Sub
FolderExists method
지정한 폴더가 있으면 True를, 그렇지 않으면 False를 반환합니다.
Syntax
object.FolderExists (folderspec)
FolderExists 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
folderspec : 필수적인 요소로 그 존재 여부를 결정할 폴더 이름입니다. 현재 폴더에 없을 수도 있는 폴더인 경우 절대 경로나 상대 경로에 상관없이 완전한 폴더 경로를 지정해야 합니다.
아래 예제는 FolderExists 메서드 사용법을 보여줍니다.
Function CheckFolderExists(folderPath As String) As Boolean
Dim fso As Object
' CreateObject를 사용하여 FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 폴더 존재 여부 확인
CheckFolderExists = fso.FolderExists(folderPath)
' 개체 정리 및 해제
Set fso = Nothing
End Function
Sub Main()
Dim folderPath As String
Dim resultMsg As String
' 확인할 폴더 경로를 지정합니다.
folderPath = "C:\Test"
' 폴더 존재 여부 확인 기능을 호출합니다.
If CheckFolderExists(folderPath) Then
resultMsg = "폴더가 존재합니다."
Else
resultMsg = "폴더가 존재하지 않습니다."
End If
MsgBox resultMsg, vbInformation, "폴더 존재 여부 확인"
End Sub
GetAbsolutePathName method
제공된 경로 내역에 근거하여 완전하고 분명한 경로를 반환합니다.
Syntax
object.GetAbsolutePathName (pathspec)
GetAbsolutePathName 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
pathspec : 필수적인 요소로 완전하고 분명한 경로로 바꿀 경로 내역입니다.
비고
경로는 지정한 드라이브의 루트를 기준으로 한 완전한 참조를 제공할 경우 완전하고 분명한 경로가 됩니다. 완전한 경로는 매핑되는 드라이브의 루트 폴더를 지정할 경우에만 경로 구분 기호 문자(\)로 끝납니다.
아래 표는 현재 디렉터리를 c:\mydocuments\reports로 가정했을 때 GetAbsolutePathName 메서드의 동작을 보여줍니다.
아래 예제는 GetAbsolutePathName 메서드 사용법을 보여줍니다.
Function GetAbsolutePath(filePath As String) As String
Dim fso As Object
' CreateObject를 사용하여 FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 절대 경로 가져오기
GetAbsolutePath = fso.GetAbsolutePathName(filePath)
' 개체 정리 및 해제
Set fso = Nothing
End Function
Sub Main()
Dim inputPath As String
Dim absolutePath As String
' 파일이나 폴더 경로를 지정합니다.
inputPath = "example.txt"
' 절대 경로 가져오기 기능을 호출합니다.
absolutePath = GetAbsolutePath(inputPath)
MsgBox "입력 경로: " & inputPath & vbNewLine & _
"절대 경로: " & absolutePath, vbInformation, "절대 경로 확인"
End Sub
GetBaseName method
경로에 있는 파일 확장명보다 짧은 마지막 구성 요소의 기본 이름을 포함하는 문자열을 반환합니다.
Syntax
object.GetBaseName (path)
GetBaseName 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
path : 필수적인 요소로 기본 이름을 반환할 구성 요소의 경로 내역입니다.
비고
경로 요소와 일치하는 구성 요소가 없으면 GetBaseName 메서드는 길이가 0인 문자열("")을 반환합니다.
Note
GetBaseName 메서드는 제공된 경로 문자열에서만 작동합니다. 경로를 해석하거나 지정한 경로의 존재 여부를 확인하지 않습니다.
아래 예제는 GetBaseName 메서드 사용법을 보여줍니다.
Function GetBaseNameFromFile(filePath As String) As String
Dim fso As Object
' CreateObject를 사용하여 FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 기본 이름 가져오기
GetBaseNameFromFile = fso.GetBaseName(filePath)
' 개체 정리 및 해제
Set fso = Nothing
End Function
Sub Main()
Dim inputPath As String
Dim baseName As String
' 파일 경로를 지정합니다.
inputPath = "C:\Test\example.txt"
' 기본 이름 가져오기 기능을 호출합니다.
baseName = GetBaseNameFromFile(inputPath)
MsgBox "입력 경로: " & inputPath & vbNewLine & _
"기본 이름: " & baseName, vbInformation, "기본 이름 확인"
End Sub
GetDrive method
지정한 경로에 있는 드라이브에 해당하는 Drive 개체를 반환합니다.
Syntax
object.GetDrive (drivespec)
GetDrive 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
drivespec : 필수적인 요소로 드라이브 문자(c), 콜론이 있는 드라이브 문자(c:), 콜론과 경로 구분 기호가 있는 드라이브 문자(c:\) 또는 네트워크 공유 내역(\\computer2\share1)이면 모두 drivespec 요소가 될 수 있습니다.
비고
네트워크 공유의 경우 해당 공유가 있는지 반드시 확인해야 합니다.
drivespec 요소가 없거나 허용되는 형식에 일치하지 않으면 오류가 발생합니다.
일반 경로 문자열에서 GetDrive 메서드를 호출하려면 아래 순서에 따라 drivespec으로 사용하기에 적절한 문자열을 가져오기 위해 아래 시퀀스 코드를 사용합니다.
DriveSpec = GetDriveName(GetAbsolutePathName(Path))
아래 예제는 GetDrive 메서드 사용법을 보여줍니다.
Function GetDriveInfo(driveLetter As String) As String
Dim fso As Object
Dim drive As Object
' CreateObject를 사용하여 FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 드라이브 정보 가져오기
Set drive = fso.GetDrive(driveLetter)
' 드라이브 정보 생성
GetDriveInfo = "드라이브 문자: " & drive.driveLetter & vbNewLine & _
"드라이브 타입: " & drive.DriveType & vbNewLine & _
"드라이브 이름: " & drive.VolumeName & vbNewLine & _
"총 공간 (바이트): " & drive.TotalSize & vbNewLine & _
"사용 가능한 공간 (바이트): " & drive.FreeSpace
' 개체 정리 및 해제
Set drive = Nothing
Set fso = Nothing
End Function
Sub Main()
Dim driveLetter As String
Dim driveInfo As String
' 확인할 드라이브 문자를 지정합니다.
driveLetter = "C:" ' 확인할 드라이브 문자를 변경하세요
' 드라이브 정보 가져오기 기능을 호출합니다.
driveInfo = GetDriveInfo(driveLetter)
MsgBox driveInfo, vbInformation, "드라이브 정보 확인"
End Sub
GetDriveName method
지정한 경로의 드라이브 이름을 포함하는 문자열을 반환합니다.
Syntax
object.GetDriveName (path)
GetDriveName 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
path : 필수적인 요소로 드라이브 이름을 반환할 구성 요소의 경로 내역입니다.
비고
드라이브를 결정할 수 없으면 GetDriveName 메서드는 길이가 0인 문자열("")을 반환합니다.
Note
GetDriveName 메서드는 제공된 경로 문자열에서만 작동합니다. 경로를 해석하거나 지정한 경로의 존재 여부를 확인하지 않습니다.
아래 예제는 GetDriveName 메서드 사용법을 보여줍니다.
Sub GetDriveNameExample()
Dim fso As Object
Dim drivePath As String
Dim driveName As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 드라이브 경로 설정 (예: "C:\")
drivePath = "C:\"
' GetDriveName 메서드 사용
driveName = GetDriveName(fso, drivePath)
' 결과 출력
MsgBox "드라이브 경로: " & drivePath & vbNewLine & "드라이브 이름: " & driveName
' FileSystemObject 해제
Set fso = Nothing
End Sub
Function GetDriveName(ByRef fso As Object, ByVal path As String) As String
Dim drive As Object
Dim driveLetter As String
' 드라이브 객체 가져오기
Set drive = fso.GetDrive(fso.GetDriveName(path))
' 드라이브 이름 가져오기
GetDriveName = drive.VolumeName
End Function
GetExtensionName method
경로에 있는 마지막 구성 요소의 확장명을 포함하는 문자열을 반환합니다.
Syntax
object.GetExtensionName (path)
GetExtensionName 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
path : 필수적인 요소로 확장명을 반환할 구성 요소의 경로 내역입니다.
비고
네트워크 드라이브에서는 루트 디렉터리(\)를 구성 요소로 간주합니다.
경로 요소와 일치하는 구성 요소가 없으면 GetExtensionName 메서드는 길이가 0인 문자열("")을 반환합니다.
아래 예제는 GetExtensionName 메서드 사용법을 보여줍니다.
Sub GetExtensionNameExample()
Dim filePath As String
Dim extension As String
' 파일 경로 설정 (예: "C:\Example\sample.txt")
filePath = "C:\Example\sample.txt"
' GetExtensionName 메서드 사용
extension = GetExtensionName(filePath)
' 결과 출력
MsgBox "파일 경로: " & filePath & vbNewLine & "확장자: " & extension
End Sub
Function GetExtensionName(ByVal filePath As String) As String
Dim fso As Object
Dim fileName As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일명만 추출
fileName = fso.GetFileName(filePath)
' 파일명에서 마지막 점 이후의 문자열을 확장자로 추출
GetExtensionName = Mid(fileName, InStrRev(fileName, ".") + 1)
' FileSystemObject 해제
Set fso = Nothing
End Function
GetFile method
지정된 경로에 있는 파일에 해당하는 File 개체를 반환합니다.
Syntax
object.GetFile (filespec)
GetFile 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
filespec : 필수적인 요소로 filespec은 특정 파일에 대한 절대 경로나 상대 경로입니다.
비고
지정한 파일이 없으면 오류가 발생합니다.
다음 코드는 파일 속성을 가져옵니다.
Sub GetFileAttributes()
Dim fso As Object
Dim filePath As String
Dim file As Object
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일 경로 설정 (예: "C:\Example\sample.txt")
filePath = "C:\Example\sample.txt"
' GetFile 메서드 사용
Set file = fso.GetFile(filePath)
' 파일 속성 출력
MsgBox "파일 이름: " & file.Name & vbNewLine & _
"파일 경로: " & file.Path & vbNewLine & _
"파일 크기: " & file.Size & " bytes" & vbNewLine & _
"마지막 수정일: " & file.DateLastModified
' FileSystemObject 해제
Set fso = Nothing
End Sub
다음 코드는 해당 파일을 삭제합니다.
Sub DeleteFile()
Dim fso As Object
Dim filePath As String
Dim file As Object
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일 경로 설정 (예: "C:\Example\sample.txt")
filePath = "C:\Example\sample.txt"
' GetFile 메서드 사용
Set file = fso.GetFile(filePath)
' 파일 삭제
file.Delete
' FileSystemObject 해제
Set fso = Nothing
End Sub
다음 코드는 파일을 복사합니다.
Sub CopyFile()
Dim fso As Object
Dim sourcePath As String
Dim destinationPath As String
Dim sourceFile As Object
Dim destinationFile As Object
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 원본 파일 경로 설정
sourcePath = "C:\Example\source.txt"
' 대상 파일 경로 설정
destinationPath = "C:\Example\destination.txt"
' GetFile 메서드 사용
Set sourceFile = fso.GetFile(sourcePath)
' 파일 복사
sourceFile.Copy destinationPath, True ' 덮어쓰기 허용
' FileSystemObject 해제
Set fso = Nothing
End Sub
GetFileName method
지정한 경로에서 드라이브 내역 부분이 아닌 마지막 구성 요소를 반환합니다.
Syntax
object.GetFileName (pathspec)
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
pathspec : 필수적인 요소로 지정한 파일에 대한 절대 경로나 상대 경로입니다.
비고
필수적인 요소로 지정한 파일에 대한 절대 경로나 상대 경로입니다.
Note
GetFileName 메서드는 제공된 경로 문자열에서만 작동합니다. 경로를 해석하거나 지정한 경로의 존재 여부를 확인하지 않습니다.
아래 코드는 파일 경로와 파일 이름을 출력합니다.
Sub ExtractFileName()
Dim fso As Object
Dim filePath As String
Dim fileName As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일 경로 설정 (예: "C:\Example\sample.txt")
filePath = "C:\Example\sample.txt"
' GetFileName 메서드 사용
fileName = fso.GetFileName(filePath)
' 파일 이름 출력
MsgBox "파일 경로: " & filePath & vbNewLine & "파일 이름: " & fileName
' FileSystemObject 해제
Set fso = Nothing
End Sub
다음 코드는 파일 이름을 변경합니다.
Sub RenameFile()
Dim fso As Object
Dim filePath As String
Dim newFileName As String
Dim fileName As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일 경로 설정 (예: "C:\Example\sample.txt")
filePath = "C:\Example\sample.txt"
' 새 파일 이름 설정
newFileName = "new_sample.txt"
' GetFileName 메서드 사용
fileName = fso.GetFileName(filePath)
' 파일 이름 변경
fso.MoveFile filePath, fso.GetParentFolderName(filePath) & "\" & newFileName
' FileSystemObject 해제
Set fso = Nothing
End Sub
다음 코드는 파일 경로와 확장자를 제외한 파일 이름을 출력합니다.
Sub ExtractFileNameWithoutExtension()
Dim fso As Object
Dim filePath As String
Dim fileName As String
Dim fileNameWithoutExtension As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일 경로 설정 (예: "C:\Example\sample.txt")
filePath = "C:\Example\sample.txt"
' GetFileName 메서드 사용
fileName = fso.GetFileName(filePath)
' 확장자를 제외한 파일 이름 추출
fileNameWithoutExtension = Left(fileName, InStrRev(fileName, ".") - 1)
' 파일 이름 출력
MsgBox "파일 경로: " & filePath & vbNewLine & "파일 이름 (확장자 제외): " & fileNameWithoutExtension
' FileSystemObject 해제
Set fso = Nothing
End Sub
GetFileVersion method
지정된 파일의 버전 번호를 반환합니다.
Syntax
object.GetFileVersion(pathspec)
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
pathspec : 필수입니다. 특정 파일의 경로(절대 또는 상대)입니다.
비고
GetFileVersion 메서드는 pathspec이 명명된 구성 요소로 끝나지 않는 경우 길이가 0인 문자열("")을 반환합니다.
다음 코드는 notepad.exe의 버전 번호를 출력합니다.
Sub GetFileVersionExample()
Dim fso As Object
Dim filePath As String
Dim fileVersion As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일 경로 설정 (예: "C:\Windows\notepad.exe")
filePath = "C:\Windows\notepad.exe"
' GetFileVersion 메서드 사용
fileVersion = fso.GetFileVersion(filePath)
' 결과 출력
MsgBox "파일 경로: " & filePath & vbNewLine & "파일 버전: " & fileVersion
' FileSystemObject 해제
Set fso = Nothing
End Sub
GetFolder method
지정한 경로에 있는 폴더에 해당하는 Folder 개체를 반환합니다.
GetFolder 메서드 구문은 아래 요소로 구성됩니다.
Syntax
object.GetFolder (folderspec)
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다..
folderspec : 필수적인 요소로 folderspec은 특정 폴더에 대한 절대 경로나 상대 경로입니다.
Note
지정한 폴더가 없으면 오류가 발생합니다.
다음 코드는 폴더 이름과 경로 출력를 출력합니다.
Sub GetFolderNameAndPathExample()
Dim folderPath As String
Dim folderInfo As String
' 대상 폴더 경로 설정 (예: "C:\Example")
folderPath = "C:\Example"
' GetFolderInfo 함수 사용하여 폴더 정보 가져오기
folderInfo = GetFolderInfo(folderPath)
' 결과 출력
MsgBox folderInfo
End Sub
Function GetFolderInfo(ByVal folderPath As String) As String
Dim fso As Object
Dim targetFolder As Object
Dim result As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' GetFolder 메서드 사용
Set targetFolder = fso.GetFolder(folderPath)
' 폴더 이름과 경로 정보 가져오기
result = "폴더 이름: " & targetFolder.name & vbNewLine & _
"폴더 경로: " & targetFolder.path
' FileSystemObject 해제
Set fso = Nothing
' 결과 반환
GetFolderInfo = result
End Function
다음 코드는 폴더 크기를 출력합니다.
Sub GetFolderSizeExample()
Dim folderPath As String
Dim folderInfo As String
' 대상 폴더 경로 설정 (예: "C:\Example")
folderPath = "C:\Example"
' GetFolderInfo 함수 사용하여 폴더 정보 가져오기
folderInfo = GetFolderInfo(folderPath)
' 결과 출력
MsgBox folderInfo
End Sub
Function GetFolderInfo(ByVal folderPath As String) As String
Dim fso As Object
Dim targetFolder As Object
Dim result As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' GetFolder 메서드 사용
Set targetFolder = fso.GetFolder(folderPath)
' 폴더 크기 정보 가져오기
result = "폴더 크기: " & targetFolder.Size & " 바이트"
' FileSystemObject 해제
Set fso = Nothing
' 결과 반환
GetFolderInfo = result
End Function
다음 코드는 폴더 생성일과 최종 수정일을 출력합니다.
Sub GetFolderDatesExample()
Dim folderPath As String
Dim folderInfo As String
' 대상 폴더 경로 설정 (예: "C:\Example")
folderPath = "C:\Example"
' GetFolderInfo 함수 사용하여 폴더 정보 가져오기
folderInfo = GetFolderInfo(folderPath)
' 결과 출력
MsgBox folderInfo
End Sub
Function GetFolderInfo(ByVal folderPath As String) As String
Dim fso As Object
Dim targetFolder As Object
Dim result As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' GetFolder 메서드 사용
Set targetFolder = fso.GetFolder(folderPath)
' 폴더 생성일과 최종 수정일 정보 가져오기
result = "폴더 생성일: " & targetFolder.DateCreated & vbNewLine & _
"폴더 최종 수정일: " & targetFolder.DateLastModified
' FileSystemObject 해제
Set fso = Nothing
' 결과 반환
GetFolderInfo = result
End Function
GetParentFolderName method
지정한 경로에 있는 마지막 구성 요소의 부모 폴더 이름을 포함하는 문자열을 반환합니다.
Syntax
object.GetParentFolderName (path)
GetParentFolderName 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
path : 필수적인 요소로 부모 폴더 이름을 반환할 구성 요소의 경로 내역입니다.
비고
경로 요소와 일치하는 구성 요소가 없으면 GetParentFolderName 메서드는 길이가 0인 문자열("")을 반환합니다.
Note
경로 요소와 일치하는 구성 요소가 없으면 GetParentFolderName 메서드는 길이가 0인 문자열("")을 반환합니다.
아래 코드는 파일 경로와 부모 폴더 이름을 출력합니다.
Sub GetParentFolderNameExample()
Dim filePath As String
Dim parentFolderName As String
' 파일 경로 설정 (예: "C:\Example\Subfolder\file.txt")
filePath = "C:\Example\Subfolder\file.txt"
' GetParentFolderName 함수 사용
parentFolderName = GetParentFolderName(filePath)
' 결과 출력
MsgBox "파일 경로: " & filePath & vbNewLine & "부모 폴더 이름: " & parentFolderName
End Sub
Function GetParentFolderName(ByVal filePath As String) As String
Dim fso As Object
Dim parentFolder As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 파일의 부모 폴더 정보 가져오기
parentFolder = fso.GetParentFolderName(filePath)
' FileSystemObject 해제
Set fso = Nothing
' 결과 반환
GetParentFolderName = parentFolder
End Function
GetSpecialFolder method
지정한 특수 폴더를 반환합니다.
Syntax
object.GetSpecialFolder (folderspec)
GetSpecialFolder 메서드 구문은 아래 요소로 구성됩니다.
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
folderspec : 필수적인 요소로 반환할 특수 폴더의 이름입니다. 다음 설정 중 하나를 가질수 있습니다.
아래 코드는 Windows 폴더 경로를 출력합니다.
Sub GetSpecialFolderExample()
Dim fso As Object
Dim specialFolder As String
Dim specialFolderType As Integer
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 특수 폴더 타입 설정 (0: WindowsFolder, 1: SystemFolder 2: TemporaryFolder)
specialFolderType = WindowsFolder
' GetSpecialFolder 메서드 사용
specialFolder = GetSpecialFolder(fso, specialFolderType)
' 결과 출력
MsgBox "특수 폴더 경로: " & specialFolder
' FileSystemObject 해제
Set fso = Nothing
End Sub
Function GetSpecialFolder(ByRef fso As Object, ByVal specialFolderType As Integer) As String
Dim specialFolder As Object
' 특수 폴더 정보 가져오기
Set specialFolder = fso.GetSpecialFolder(specialFolderType)
' 특수 폴더 경로 반환
GetSpecialFolder = specialFolder.path
End Function
GetStandardStream method
표준 입력, 출력 또는 오류 스트림에 해당하는 TextStream 객체를 반환합니다.
Syntax
object.GetStandardStream(standardStreamType [, unicode ])
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
standardStreamType : 필수입니다. 세 가지 상수 중 하나 일 수 있습니다: StdErr, StdIn 또는 StdOut.
unicode : 선택 사항입니다. 파일이 유니코드 파일로 생성되는지 또는 ASCII 파일로 생성되는지를 나타내는 Boolean 값입니다. 파일이 유니코드 파일로 생성되면 이 값은 참이고, ASCII 파일로 생성되면 거짓입니다. 이 값을 생략하면 ASCII 파일로 간주됩니다.
표준 스트림 유형은 다음 설정 중 하나를 가질 수 있습니다.
VBA로 예제를 만들어 보려고 했으나 실행이 안되는것 같아서 VBS로 만든 결과를 대신 첨부합니다.
* GetStandardStream 메서드를 사용하는 일은 매우 드물다고 합니다.그냥 참고로만 봐주세요.
GetTempName method
임시 파일이나 폴더를 요구하는 동작을 수행하는 데 사용할 무작위로 만들어지는 임시 파일이나 폴더 이름을 반환합니다.
Syntax
object.GetTempName
선택적인 요소인 object는 항상 FileSystemObject의 이름입니다.
비고
GetTempName 메서드는 파일을 만들지 않습니다. 다만 CreateTextFile 메서드로 파일을 만드는 데 사용될 수 있는 임시 파일 이름만을 제공합니다.
Sub GetTempNameExample()
Dim fso As Object
Dim tempName As String
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' GetTempName 메서드 사용
tempName = GetTempName(fso)
' 결과 출력
MsgBox "임시 파일 이름: " & tempName
' FileSystemObject 해제
Set fso = Nothing
End Sub
Function GetTempName(ByRef fso As Object) As String
' 임시 파일 이름 생성
GetTempName = fso.GetTempName
End Function
MoveFile method
하나 이상의 파일을 한 위치에서 다른 위치로 옮깁니다.
Syntax
object.MoveFile source, destination
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.source : 필수적인 요소로 옮길 파일에 대한 경로입니다. 원본 요소 문자열에서는 마지막 경로 구성 요소에만 와일드카드 문자를 포함할 수 있습니다.destination : 필수적인 요소로 파일을 옮겨 놓을 대상 위치에 대한 경로입니다. 대상 요소에는 와일드카드 문자를 포함할 수 없습니다.
비고
원본에 와일드카드 문자가 있거나 대상이 경로 구분 기호(\)로 끝나면 이 부분이 해당 파일을 옮길 경우 폴더로 간주되며, 그렇지 않으면 만들 파일 이름으로 간주하게 됩니다. 어느 경우에나 각 파일을 옮길 때 아래와 같은 상황이 발생할 수 있습니다.
- 일반적인 경우로 대상이 없으면 해당 파일을 옮깁니다.
- 대상이 기존 파일인 경우 오류가 발생합니다.
- 대상이 디렉터리인 경우 오류가 발생합니다.
와일드카드 문자를 사용하는 원본에 일치하는 파일이 없는 경우에도 오류가 발생합니다. MoveFile 메서드는 오류를 처음 만날 때 중지됩니다. 오류가 발생하기 전에 바꾼 사항을 밀어내거나 원래대로 되돌릴 수 없습니다.
중요
운영 체제에서 지원하는 경우에만 이 메서드를 통해 파일을 볼륨 간에 옮길 수 있습니다.
아래 코드는 MoveFile 메서드 사용법을 보여줍니다.
Sub MoveFileExample()
Dim sourceFilePath As String
Dim destinationFilePath As String
' 원본 파일 경로 설정
sourceFilePath = "C:\SourceFolder\file.txt"
' 대상 파일 경로 설정
destinationFilePath = "C:\DestinationFolder\file.txt"
' 파일 이동
If MoveFile(sourceFilePath, destinationFilePath) Then
MsgBox "파일 이동이 완료되었습니다."
Else
MsgBox "파일 이동에 실패했습니다."
End If
End Sub
Function MoveFile(ByVal sourcePath As String, ByVal destinationPath As String) As Boolean
Dim fso As Object
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
' 파일 이동
fso.MoveFile sourcePath, destinationPath
MoveFile = (Err.Number = 0) ' 이동 성공 여부 반환
' FileSystemObject 해제
Set fso = Nothing
On Error GoTo 0
End Function
MoveFolder method
하나 이상의 폴더를 한 위치에서 다른 위치로 옮깁니다.
Syntax
object.MoveFolder (source, destination)
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
source : 필수적인 요소로 옮길 폴더에 대한 경로입니다. 원본 요소 문자열에서는 마지막 경로 구성 요소에만 와일드카드 문자를 포함할 수 있습니다.
destination : 필수적인 요소로 폴더를 옮겨 놓을 대상 위치에 대한 경로입니다. 대상 요소에는 와일드카드 문자를 포함할 수 없습니다.
비고
원본에 와일드카드 문자가 있거나 대상이 경로 구분 기호(\)로 끝나면 이 부분이 해당 파일을 옮길 경우 폴더로 간주되며, 그렇지 않으면 만들 파일 이름으로 간주하게 됩니다. 어느 경우에나 각 폴더를 옮길 때 아래와 같은 상황이 발생할 수 있습니다.
- 일반적인 경우로 대상이 없으면 해당 폴더를 옮깁니다.
- 대상이 기존 파일인 경우 오류가 발생합니다.
- 대상이 디렉터리인 경우 오류가 발생합니다.
와일드 카드 문자를 사용하는 원본에 일치하는 파일이 없는 경우에도 오류가 발생합니다. MoveFolder 메서드는 오류를 처음 만날 때 중지됩니다. 오류가 발생하기 전에 바꾼 사항을 밀어내거나 원래대로 되돌릴 수 없습니다.
중요
운영 체제에서 지원하는 경우에만 이 메서드를 통해 폴더를 볼륨 간에 옮길 수 있습니다.
아래 코드는 MoveFile 메서드 사용법을 보여줍니다.
Sub MoveFolderExample()
Dim sourceFolderPath As String
Dim destinationFolderPath As String
' 원본 폴더 경로 설정
sourceFolderPath = "C:\SourceFolder"
' 대상 폴더 경로 설정
destinationFolderPath = "C:\DstinationFolder"
' 폴더 이동
If MoveFolder(sourceFolderPath, destinationFolderPath) Then
MsgBox "폴더 이동이 완료되었습니다."
Else
MsgBox "폴더 이동에 실패했습니다."
End If
End Sub
Function MoveFolder(ByVal sourcePath As String, ByVal destinationPath As String) As Boolean
Dim fso As Object
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
' 폴더 이동
fso.MoveFolder sourcePath, destinationPath
MoveFolder = (Err.Number = 0) ' 이동 성공 여부 반환
' FileSystemObject 해제
Set fso = Nothing
On Error GoTo 0
End Function
OpenTextFile method
지정한 파일을 열고, 그 파일을 읽거나 추가하는 데 사용될 수 있는 TextStream 개체를 반환합니다.
Syntax
object.OpenTextFile (filename, [ iomode, [ create, [ format ]]])
object : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
filename : 필수적인 요소로 언제나 FileSystemObject의 이름입니다.
iomode : 선택적인 요소로 입출력 모드를 나타냅니다. 두 상수, 즉 ForReading 또는 ForAppending 중 하나이면 됩니다.
create : 선택적인 요소로 지정한 파일 이름이 없으면 새 파일을 만들지 여부를 나타내는 부울 값입니다. 새 파일을 만들면 True, 그렇지 않으면 False(기본값)입니다.
format : 선택적인 요소로 세 개의 Tristate 값 중 하나를 사용하여 열릴 파일의 형식을 나타냅니다. 생략하면 파일이 ASCII 형식으로 열립니다.
iomode 인수는 다음 설정 중 하나를 가질 수 있습니다.
format 인수에는 다음 설정 중 하나가 있을 수 있습니다.
아래 코드는 OpenTextFile 메서드 사용법을 보여줍니다.
Option Explicit
Sub OpenTextFileExample()
Dim filePath As String
Dim fileContent As String
' 텍스트 파일 경로 설정
filePath = "D:\ExampleFolder\file.txt"
' 파일 읽기
fileContent = ReadTextFile(filePath)
MsgBox "읽은 파일 내용:" & vbCrLf & fileContent
' 파일 쓰기
fileContent = "새로운 내용입니다."
If WriteTextFile(filePath, fileContent) Then
MsgBox "파일 쓰기가 완료되었습니다."
Else
MsgBox "파일 쓰기에 실패했습니다."
End If
End Sub
Function ReadTextFile(ByVal path As String) As String
Dim fso As Object
Dim textFile As Object
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 텍스트 파일 열기 (읽기 전용 모드)
Set textFile = fso.OpenTextFile(path, 1) ' 1 : ForReading
' 파일 내용 읽기
ReadTextFile = textFile.ReadAll
' 파일 닫기
textFile.Close
' FileSystemObject 해제
Set fso = Nothing
End Function
Function WriteTextFile(ByVal path As String, ByVal content As String) As Boolean
Dim fso As Object
Dim textFile As Object
' FileSystemObject 생성
Set fso = CreateObject("Scripting.FileSystemObject")
' 텍스트 파일 열기 (쓰기 전용 모드)
Set textFile = fso.OpenTextFile(path, 2, True) ' 2 : ForWriting, True : 파일이 없으면 새로 생성
On Error Resume Next
' 파일 내용 쓰기
textFile.Write content
WriteTextFile = (Err.Number = 0) ' 쓰기 성공 여부 반환
' 파일 닫기
textFile.Close
' FileSystemObject 해제
Set fso = Nothing
On Error GoTo 0
End Function
'Microsoft Scripting Runtime' 카테고리의 다른 글
Folder 개체 (0) | 2023.08.10 |
---|---|
Folders 컬렉션 (0) | 2023.08.10 |
Drive 개체 (0) | 2023.08.10 |
Drives 컬렉션 (0) | 2023.08.09 |
Dictionary (0) | 2023.07.29 |