Excel VBA – PDF로 변환하여 다른이름으로 저장하기 & 프린트하기
Last updated on 3월 26, 2023
이 튜토리얼에서는 Excel VBA에서 PDF로 저장/인쇄하는 방법을 보여드립니다.
PDF로 프린트하기
이 간단한 프로시저는 ActiveSheet를 PDF로 인쇄합니다.
Sub SimplePrintToPDF()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="demo.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
또한 아래와 같이 오류 처리 등이 포함된 함수를 만들어 ActiveSheet를 PDF로 인쇄합니다:
Sub PrintPDF()
Call Save_PDF
End Sub
Function Save_PDF() As Boolean ' Copies sheets into new PDF file for e-mailing
Dim Thissheet As String, ThisFile As String, PathName As String
Dim SvAs As String
Application.ScreenUpdating = False
' 현재 통합문서에서 파일 이름을 추출합니다
Thissheet = ActiveSheet.Name
ThisFile = ActiveWorkbook.Name
PathName = ActiveWorkbook.Path
SvAs = PathName & "\" & Thissheet & ".pdf"
'인쇄 품질을 설정합니다
On Error Resume Next
ActiveSheet.PageSetup.PrintQuality = 600
Err.Clear
On Error GoTo 0
' 저장 위치 및 방법을 설정합니다
On Error GoTo RefLibError
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SvAs, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
On Error GoTo 0
SaveOnly:
MsgBox "시트의 복사본이 pdf파일로 성공적으로 저장되었습니다 : " & vbCrLf & vbCrLf & SvAs & _
"pdf 문서를 검토해주세요. 문서가 제대로 보이지 않으면 프린팅 매개변수를 조정하고 다시 시도하세요."
Save_PDF = True
GoTo EndMacro
RefLibError:
MsgBox "PDF로 저장할 수 없습니다. 참조 라이브러리를 찾을 수 없습니다."
Save_PDF = False
EndMacro:
End Function
이 함수는 PDF로 인쇄가 성공했는지 여부에 따라 TRUE 또는 FALSE를 반환합니다.
PDF 저장 및 이메일 보내기 함수
이 함수는 ActiveSheet를 PDF로 저장하고 (선택 사항으로) PDF를 이메일에 첨부합니다(Outlook이 설치되어 있다고 가정하겠습니다):
Sub Test_Save_PDF()
Call Send_PDF("SendEmail")
End Sub
Function Send_PDF(Optional action As String = "SaveOnly") As Boolean ' 시트를 이메일로 보내기 위한 새 PDF 파일로 복사합니다.
Dim Thissheet As String, ThisFile As String, PathName As String
Dim SvAs As String
Application.ScreenUpdating = False
' 현재 통합문서에서 파일이름을 추출합니다.
Thissheet = ActiveSheet.Name
ThisFile = ActiveWorkbook.Name
PathName = ActiveWorkbook.Path
SvAs = PathName & "\" & Thissheet & ".pdf"
'인쇄 품질을 설정합니다
On Error Resume Next
ActiveSheet.PageSetup.PrintQuality = 600
Err.Clear
On Error GoTo 0
' 저장 위치 및 방법을 설정합니다
On Error GoTo RefLibError
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SvAs, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
On Error GoTo 0
' 이메일을 송부합니다
If action = "SendEmail" Then
On Error GoTo SaveOnly
Set olApp = CreateObject("Outlook.Application")
Set olEmail = olApp.CreateItem(olMailItem)
With olEmail
.Subject = Thissheet & ".pdf"
.Attachments.Add SvAs
.Display
End With
On Error GoTo 0
GoTo EndMacro
End If
SaveOnly:
MsgBox "시트의 복사본이 pdf파일로 성공적으로 저장되었습니다 : " & vbCrLf & vbCrLf & SvAs & _
"pdf 문서를 검토해주세요. 문서가 제대로 보이지 않으면 프린팅 매개변수를 조정하고 다시 시도하세요."
Send_PDF = True
GoTo EndMacro
RefLibError:
MsgBox "PDF로 저장할 수 없습니다. 참조 라이브러리를 찾을 수 없습니다."
Send_PDF = False
EndMacro:
End Function