Excel VBA – PDF로 변환하여 다른이름으로 저장하기 & 프린트하기

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

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

 

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기