엑셀 VBA에서 Workbook 개체는 엑셀 파일(통합 문서) 을 의미합니다.
Workbook 개체를 사용하면 파일 열기, 저장, 닫기, 시트 추가, 보호 설정 등 다양한 작업을 수행할 수 있습니다.
1. Workbook 개체 접근 방법
✅ 현재 활성화된 통합 문서 (Workbook) 사용
Dim wb As Workbook
Set wb = ActiveWorkbook ' 현재 활성화된 통합 문서 저장
MsgBox wb.Name ' 파일 이름 표시
|
✅ 특정 이름의 통합 문서 사용
Set wb = Workbooks("파일이름.xlsx")
|
✅ 새로운 통합 문서 생성
Dim wb As Workbook
Set wb = Workbooks.Add
wb.SaveAs "C:\Users\Desktop\새파일.xlsx"
|
✅ 특정 경로의 통합 문서 열기
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Desktop\기존파일.xlsx")
|
2. Workbook 개체의 주요 속성 (Properties)
속성
|
설명
|
예제
|
Name
|
통합 문서의 파일명 반환
|
MsgBox ActiveWorkbook.Name
|
Path
|
파일 경로 반환
|
MsgBox ActiveWorkbook.Path
|
FullName
|
파일명 + 전체 경로 반환
|
MsgBox ActiveWorkbook.FullName
|
Sheets
|
포함된 시트 개체 접근
|
ActiveWorkbook.Sheets.Count
|
Worksheets
|
포함된 워크시트 개체 접근
|
ActiveWorkbook.Worksheets.Count
|
Saved
|
저장 여부 확인
|
If ActiveWorkbook.Saved = False Then MsgBox "저장되지 않음"
|
ReadOnly
|
읽기 전용 여부 확인
|
MsgBox ActiveWorkbook.ReadOnly
|
3. Workbook 개체의 주요 메서드 (Methods)
메서드
|
설명
|
예제
|
Save
|
현재 파일 저장
|
ActiveWorkbook.Save
|
SaveAs
|
다른 이름으로 저장
|
ActiveWorkbook.SaveAs "C:\Users\Desktop\새파일.xlsx"
|
Close
|
통합 문서 닫기
|
ActiveWorkbook.Close False (저장 안 함)
|
Open
|
파일 열기
|
Workbooks.Open "C:\파일.xlsx"
|
Activate
|
해당 통합 문서 활성화
|
Workbooks("파일.xlsx").Activate
|
Protect
|
통합 문서 보호
|
ActiveWorkbook.Protect "암호"
|
Unprotect
|
보호 해제
|
ActiveWorkbook.Unprotect "암호"
|
4. Workbook 개체 활용 예제
📌 1) 모든 열려있는 통합 문서 목록 출력하기
Sub 모든_워크북_출력()
Dim wb As Workbook
For Each wb In Workbooks
Debug.Print wb.Name ' Ctrl + G (즉시 실행 창)에서 확인 가능
Next wb
End Sub
|
📌 2) 특정 파일 열고 데이터 입력 후 저장 & 닫기
Sub 파일_열기_입력_저장_닫기()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Desktop\데이터.xlsx") ' 파일 열기
wb.Sheets("Sheet1").Range("A1").Value = "VBA 테스트" ' 데이터 입력
wb.Save ' 저장
wb.Close ' 닫기
End Sub
|
📌 3) 특정 파일 저장 후 닫기
Sub 저장_닫기()
ActiveWorkbook.Save ' 저장
ActiveWorkbook.Close False ' 저장 후 닫기
End Sub
|
📌 4) 저장되지 않은 파일 경고 후 저장 & 닫기
Sub 변경_저장_체크()
Dim wb As Workbook
Set wb = ActiveWorkbook
If wb.Saved = False Then
If MsgBox("파일이 저장되지 않았습니다. 저장할까요?", vbYesNo) = vbYes Then
wb.Save
End If
End If
wb.Close False ' 닫기
End Sub
|
📌 5) 현재 열려있는 모든 통합 문서 저장 후 닫기
Sub 모든_워크북_저장_닫기()
Dim wb As Workbook
For Each wb In Workbooks
If wb.Saved = False Then wb.Save
wb.Close False
Next wb
End Sub
|
📌 6) 통합 문서 보호 설정 & 해제
Sub 워크북_보호()
ActiveWorkbook.Protect Password:="1234"
End Sub
Sub 워크북_보호_해제()
ActiveWorkbook.Unprotect Password:="1234"
End Sub
|
📌 7) 파일 자동 백업 기능 (현재 파일을 복사)
Sub 파일_백업()
Dim backupPath As String
backupPath = "C:\Users\Desktop\백업_" & Format(Now, "yyyymmdd_hhmmss") & ".xlsx"
ActiveWorkbook.SaveCopyAs backupPath
MsgBox "백업 완료: " & backupPath
End Sub
|
📝 정리
- Workbooks.Add → 새 통합 문서 생성
- Workbooks.Open("파일경로") → 기존 파일 열기
- .Save, .SaveAs → 저장
- .Close, .Activate, .Protect → 파일 관리 가능
- VBA를 활용해 여러 개의 파일을 한 번에 관리하고 자동화 가능
🔥 Workbook 개체를 활용하면 엑셀 파일을 효율적으로 자동화할 수 있습니다! 🚀