1️⃣ 주요 기능과 필요성
✅ (1) 엑셀 파일이 저장되지 않았을 경우, 저장하라는 메세지 띄움.
- 사용자가 직접 파일을 저장할 수 있도록 저장 대화 상자를 띄움.
✅ (2) 사용자가 PDF 저장 폴더를 선택할 수 있음
- 사용자가 PDF 저장 위치를 선택 가능.
- PDF 파일이 원하는 폴더에 저장될 수 있어 파일 정리 및 관리가 편리.
✅ (3) 파일명 자동 설정 및 중복 방지
- PDF 파일명이 워크북 이름 + 날짜_시간 형식으로 자동 지정됨.
- Format(Now, "yyyymmdd_HHmmss")를 추가하여 중복 파일명이 생성되지 않도록 방지.
📌 매번 새로운 파일이 생성되므로 기존 파일이 덮어씌워지는 실수를 방지.
✅ (4) 저장된 파일 위치를 사용자에게 알려줌
- MsgBox를 통해 PDF가 저장된 정확한 파일 경로를 사용자에게 표시.
- 파일이 저장된 경로를 쉽게 확인하고 바로 열어볼 수 있음.
Sub SaveAllSheetsAsSinglePDF()
Dim saveFolder As String ' PDF 저장 폴더 경로
Dim pdfFilePath As String ' 저장될 PDF 파일 경로
Dim workbookName As String ' 현재 워크북 이름
Dim timeStamp As String ' 날짜 및 시간 스탬프
' 워크북이 처음 저장되지 않은 경우, 파일 저장 대화 상자 띄우기
If ActiveWorkbook.Path = "" Then
MsgBox "현재 파일이 저장되지 않았습니다." & vbCrLf & "먼저 저장하고 다시 실행하세요.", vbExclamation, "파일 저장 필요"
Exit Sub
End If
' 파일 저장 폴더 선택
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False ' 복수 선택 비활성화
.Title = "PDF를 저장할 폴더를 선택하세요"
.Show
' 사용자가 폴더를 선택하지 않은 경우 종료
If .SelectedItems.Count = 0 Then Exit Sub
saveFolder = .SelectedItems(1) & "\"
End With
' 폴더가 선택되지 않은 경우 기본 경로 사용
If saveFolder = "" Then saveFolder = Application.DefaultFilePath & "\"
' 현재 워크북 이름 가져오기 (확장자 제거)
workbookName = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1)
' 날짜 및 시간 스탬프 추가 (중복 방지)
timeStamp = Format(Now, "yyyymmdd_HHmmss")
' PDF 파일 저장 경로 설정 (워크북명 + AllSheets + 날짜/시간)
pdfFilePath = saveFolder & workbookName & "_" & timeStamp & ".pdf"
' 전체 시트를 하나의 PDF로 저장
On Error Resume Next
ActiveWorkbook.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=pdfFilePath, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
On Error GoTo 0
' 저장 완료 메시지 출력
MsgBox "전체 시트를 하나의 PDF로 저장하였습니다." & vbCrLf & _
"저장된 위치: " & pdfFilePath, vbInformation, "PDF 저장 완료"
End Sub
|