Workbook 개체

Save 및 SaveAs 메서드

노만e 2025. 3. 14. 04:31

엑셀 VBA에서 Save 및 SaveAs 메서드는 워크북을 저장하는 기능을 제공합니다.

즉, 파일을 덮어쓰거나, 새로운 이름으로 저장할 때 사용됩니다.


1. 기본 문법

ThisWorkbook.Save
ThisWorkbook.SaveAs Filename:="파일경로", FileFormat:=xlOpenXMLWorkbook
메서드
설명
Save
현재 파일을 덮어쓰기 저장
SaveAs
새로운 이름, 경로, 형식으로 저장

📌 Save는 기존 파일에 덮어쓰기만 가능하며, 파일이 처음 생성된 경우 SaveAs를 사용해야 함

📌 SaveAs는 파일 형식을 지정할 수 있으며, 기존 파일과 다른 이름으로 저장 가능


2. 현재 워크북 저장 (Save)

Sub 현재파일_저장()
ThisWorkbook.Save
End Sub

📌 현재 열려 있는 엑셀 파일을 그대로 저장

📌 파일이 이미 저장된 상태여야 하며, 새 파일에는 사용 불가


3. 새 파일로 저장 (SaveAs)

Sub 새로운이름_저장()
ThisWorkbook.SaveAs "C:\Users\Public\새파일.xlsx", FileFormat:=xlOpenXMLWorkbook
End Sub

📌 현재 워크북을 "새파일.xlsx" 이름으로 저장

📌 기본적으로 .xlsx 형식(xlOpenXMLWorkbook)으로 저장


4. 기존 파일 덮어쓰기 경고 없이 저장

Sub 저장_경고없음()
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
End Sub

📌 파일 덮어쓰기 시 경고 메시지를 표시하지 않고 자동 저장


5. 다른 형식으로 저장 (.xlsm, .xls, .csv)

Sub 다른형식_저장()
Dim 경로 As String
경로 = "C:\Users\Public\매크로파일.xlsm"

ThisWorkbook.SaveAs Filename:=경로, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

📌 매크로가 포함된 .xlsm 형식(xlOpenXMLWorkbookMacroEnabled)으로 저장

다른 형식 저장 옵션:

파일 형식
코드 (FileFormat)
.xlsx
xlOpenXMLWorkbook
.xlsm (매크로 포함)
xlOpenXMLWorkbookMacroEnabled
.xls (구버전)
xlExcel8
.csv
xlCSV


6. CSV 파일로 저장

Sub CSV_저장()
Dim 경로 As String
경로 = "C:\Users\Public\데이터.csv"
ActiveWorkbook.SaveAs Filename:=경로, FileFormat:=xlCSV
End Sub

📌 현재 파일을 CSV 형식으로 저장


7. 다른 폴더에 저장

Sub 다른폴더_저장()
Dim 저장경로 As String
저장경로 = "C:\Users\Public\ExcelBackup\백업파일.xlsx"
ThisWorkbook.SaveAs Filename:=저장경로, FileFormat:=xlOpenXMLWorkbook
End Sub

📌 다른 폴더(ExcelBackup)에 파일을 저장 (폴더가 있어야 함, 없으면 생성 필요)


8. 파일 저장 후 자동 종료

Sub 저장후_종료()
ThisWorkbook.Save
Application.Quit
End Sub

📌 파일을 저장한 후 엑셀 종료 (Quit 사용)


9. 파일 이름을 사용자 입력으로 받기 (InputBox)

Sub 사용자입력_저장()
Dim 파일이름 As String
파일이름 = InputBox("저장할 파일 이름을 입력하세요:", "파일 저장")

If 파일이름 <> "" Then
ThisWorkbook.SaveAs "C:\Users\Public\" & 파일이름 & ".xlsx", FileFormat:=xlOpenXMLWorkbook
Else
MsgBox "파일 저장이 취소되었습니다.", vbExclamation
End If
End Sub

📌 사용자가 입력한 파일 이름으로 저장 (C:\Users\Public\ 폴더에 저장)


10. 파일 대화상자를 사용하여 저장 (Application.GetSaveAsFilename)

Sub 대화상자_저장()
Dim 저장경로 As String
저장경로 = Application.GetSaveAsFilename("새파일.xlsx", "Excel 파일 (*.xlsx), *.xlsx")
If 저장경로 <> "False" Then
ThisWorkbook.SaveAs 저장경로, FileFormat:=xlOpenXMLWorkbook
Else
MsgBox "파일 저장이 취소되었습니다.", vbExclamation
End If
End Sub

📌 사용자가 직접 저장 위치와 파일 이름을 선택할 수 있도록 대화상자 표시

📌 취소하면 "False"를 반환하므로 체크 필요


11. 현재 날짜와 시간 포함하여 파일 저장

Sub 날짜포함_저장()
Dim 파일경로 As String
파일경로 = "C:\Users\Public\백업_" & Format(Now, "yyyy-mm-dd_hh-mm-ss") & ".xlsx"
ThisWorkbook.SaveAs 파일경로, FileFormat:=xlOpenXMLWorkbook
End Sub

📌 현재 날짜/시간을 포함한 파일명(백업_YYYY-MM-DD_HH-MM-SS.xlsx)으로 저장


12. 현재 파일이 저장된 위치 확인

Sub 저장된경로_확인()
MsgBox "현재 파일 경로: " & ThisWorkbook.FullName
End Sub

📌 현재 저장된 파일의 전체 경로 확인 (Workbook.FullName 사용)


13. 새 파일을 만든 후 저장

Sub 새파일_만들고저장()
Dim 새워크북 As Workbook
Set 새워크북 = Workbooks.Add
새워크북.SaveAs "C:\Users\Public\새문서.xlsx", FileFormat:=xlOpenXMLWorkbook
End Sub

📌 새 워크북을 만들고, 지정된 이름으로 저장


📝 정리

기능
VBA 코드
현재 파일 저장
ThisWorkbook.Save
새 이름으로 저장
ThisWorkbook.SaveAs "경로\새파일.xlsx", FileFormat:=xlOpenXMLWorkbook
기존 파일 덮어쓰기 경고 없이 저장
Application.DisplayAlerts = False: ThisWorkbook.Save: Application.DisplayAlerts = True
.xlsm(매크로 포함) 저장
FileFormat:=xlOpenXMLWorkbookMacroEnabled
CSV 파일로 저장
FileFormat:=xlCSV
파일 저장 후 자동 종료
ThisWorkbook.Save: Application.Quit
사용자가 입력한 파일 이름으로 저장
InputBox("파일 이름 입력")SaveAs
파일 대화상자로 저장
Application.GetSaveAsFilename 사용
현재 날짜 포함하여 저장
Format(Now, "yyyy-mm-dd_hh-mm-ss")
현재 파일 경로 확인
MsgBox ThisWorkbook.FullName
새 파일을 만든 후 저장
Set 새워크북 = Workbooks.Add: 새워크북.SaveAs "경로\파일.xlsx"

🔥 VBA의 Save와 SaveAs를 활용하면 파일을 자동으로 저장하고 백업할 수 있습니다! 🚀