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 코드 예시로 돌아가기

AI in the VBA Editor!

AutoMacro is the ultimate VBA add-in.

AI, Generators, UI Builders, Code Library, and More!

Learn More

AutoMacro: AI in the VBA Editor!

Learn More