엑셀 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를 활용하면 파일을 자동으로 저장하고 백업할 수 있습니다! 🚀