Outlook 에서 이메일과 첨부파일을 단일 PDF 파일으로 변환하거나 저장하는 방법은 무엇인가요?
이 문서에서는 Outlook 에서 이메일 메시지와 해당 이메일 내 모든 첨부파일을 단일 PDF 파일으로 저장하는 방법에 대해 설명합니다。
VBA 코드를 사용하여 이메일과 첨부파일을 단일 PDF 파일으로 변환하거나 저장하기
VBA 코드를 사용하여 이메일과 첨부파일을 단일 PDF 파일으로 변환하거나 저장하기
Outlook 에서 이메일과 모든 첨부파일을 단일 PDF 파일으로 저장하려면 다음 단계를 따르세요。
1. 단일 PDF 파일으로 저장할 첨부파일이 포함된 이메일을 선택한 후Alt+F11키를 눌러Microsoft Visual Basic for Applications창을 엽니다。
2. Microsoft Visual Basic for Applications창에서삽입>모듈을 클릭합니다。 그런 다음 아래의 VBA 코드를 모듈 창에 복사합니다。
VBA 코드: 이메일과 첨부파일을 단일 PDF 파일으로 저장하기
Public Sub MergeMailAndAttachsToPDF()
'Update by Extendoffice 2018/3/5
Dim xSelMails As MailItem
Dim xFSysObj As FileSystemObject
Dim xOverwriteBln As Boolean
Dim xLooper As Integer
Dim xEntryID As String
Dim xNameSpace As Outlook.NameSpace
Dim xMail As Outlook.MailItem
Dim xExt As String
Dim xSendEmailAddr, xCompanyDomain As String
Dim xWdApp As Word.Application
Dim xDoc, xNewDoc As Word.Document
Dim I As Integer
Dim xPDFSavePath As String
Dim xPath As String
Dim xFileArr() As String
Dim xExcel As Excel.Application
Dim xWb As Workbook
Dim xWs As Worksheet
Dim xTempDoc As Word.Document
On Error Resume Next
If (Outlook.ActiveExplorer.Selection.Count > 1) Or (Outlook.ActiveExplorer.Selection.Count = 0) Then
MsgBox "Please Select a email.", vbInformation + vbOKOnly
Exit Sub
End If
Set xSelMails = Outlook.ActiveExplorer.Selection.Item(1)
xEntryID = xSelMails.EntryID
Set xNameSpace = Application.GetNamespace("MAPI")
Set xMail = xNameSpace.GetItemFromID(xEntryID)
xSendEmailAddr = xMail.SenderEmailAddress
xCompanyDomain = Right(xSendEmailAddr, Len(xSendEmailAddr) - InStr(xSendEmailAddr, "@"))
xOverwriteBln = False
Set xExcel = New Excel.Application
xExcel.Visible = False
Set xWdApp = New Word.Application
xExcel.DisplayAlerts = False
xPDFSavePath = xExcel.Application.GetSaveAsFilename(InitialFileName:="", FileFilter:="PDF Files(*.pdf),*.pdf")
If xPDFSavePath = "False" Then
xExcel.DisplayAlerts = True
xExcel.Quit
xWdApp.Quit
Exit Sub
End If
xPath = Left(xPDFSavePath, InStrRev(xPDFSavePath, "\"))
cPath = xPath & xCompanyDomain & "\"
yPath = cPath & Format(Now(), "yyyy") & "\"
mPath = yPath & Format(Now(), "MMMM") & "\"
If Dir(xPath, vbDirectory) = vbNullString Then
MkDir xPath
End If
EmailSubject = CleanFileName(xMail.Subject)
xSaveName = Format(xMail.ReceivedTime, "yyyymmdd") & "_" & EmailSubject & ".doc"
Set xFSysObj = CreateObject("Scripting.FileSystemObject")
If xOverwriteBln = False Then
xLooper = 0
Do While xFSysObj.FileExists(yPath & xSaveName)
xLooper = xLooper + 1
xSaveName = Format(xMail.ReceivedTime, "yyyymmdd") & "_" & EmailSubject & "_" & xLooper & ".doc"
Loop
Else
If xFSysObj.FileExists(yPath & xSaveName) Then
xFSysObj.DeleteFile yPath & xSaveName
End If
End If
xMail.SaveAs xPath & xSaveName, olDoc
If xMail.Attachments.Count > 0 Then
For Each atmt In xMail.Attachments
xExt = SplitPath(atmt.filename, 2)
If (xExt = ".docx") Or (xExt = ".doc") Or (xExt = ".docm") Or (xExt = ".dot") Or (xExt = ".dotm") Or (xExt = ".dotx") _
Or (xExt = ".xlsx") Or (xExt = ".xls") Or (xExt = ".xlsm") Or (xExt = ".xlt") Or (xExt = ".xltm") Or (xExt = ".xltx") Then
atmtName = CleanFileName(atmt.filename)
atmtSave = xPath & Format(xMail.ReceivedTime, "yyyymmdd") & "_" & atmtName
atmt.SaveAsFile atmtSave
End If
Next
End If
Set xNewDoc = xWdApp.Documents.Add("Normal", False, wdNewBlankDocument, False)
Set xFilesFld = xFSysObj.GetFolder(xPath)
xFileArr() = GetFiles(xPath)
For I = 0 To UBound(xFileArr()) - 1
xExt = SplitPath(xFileArr(I), 2)
If (xExt = ".xlsx") Or (xExt = ".xls") Or (xExt = ".xlsm") Or (xExt = ".xlt") Or _
(xExt = ".xltm") Or (xExt = ".xltx") Then 'conver excel to word
Set xWb = xExcel.Workbooks.Open(xPath & xFileArr(I))
Set xTempDoc = xWdApp.Documents.Add("Normal", False, wdNewBlankDocument, False)
Set xWs = xWb.ActiveSheet
xWs.UsedRange.Copy
xTempDoc.Content.PasteAndFormat wdFormatOriginalFormatting
xTempDoc.SaveAs2 xPath & xWs.Name + ".docx", wdFormatXMLDocument
xWb.Close False
Kill xPath & xFileArr(I)
xTempDoc.Close wdDoNotSaveChanges, wdOriginalDocumentFormat, False
End If
Next
xExcel.DisplayAlerts = True
xExcel.Quit
xFileArr() = GetFiles(xPath)
'Merge Documents
For I = 0 To UBound(xFileArr()) - 1
xExt = SplitPath(xFileArr(I), 2)
If (xExt = ".docx") Or (xExt = ".doc") Or (xExt = ".docm") Or (xExt = ".dot") Or _
(xExt = ".dotm") Or (xExt = ".dotx") Then
MergeDoc xWdApp, xPath & xFileArr(I), xNewDoc
Kill xPath & xFileArr(I)
End If
Next
xNewDoc.Sections.Item(1).Range.Delete wdCharacter, 1
xNewDoc.SaveAs2 xPDFSavePath, wdFormatPDF
xNewDoc.Close wdDoNotSaveChanges, wdOriginalDocumentFormat, False
xWdApp.Quit
Set xMail = Nothing
Set xNameSpace = Nothing
Set xFSysObj = Nothing
MsgBox "Merged successfully", vbInformation + vbOKOnly
End Sub
Public Function SplitPath(FullPath As String, ResultFlag As Integer) As String
Dim SplitPos As Integer, DotPos As Integer
SplitPos = InStrRev(FullPath, "/")
DotPos = InStrRev(FullPath, ".")
Select Case ResultFlag
Case 0
SplitPath = Left(FullPath, SplitPos - 1)
Case 1
If DotPos = 0 Then DotPos = Len(FullPath) + 1
SplitPath = Mid(FullPath, SplitPos + 1, DotPos - SplitPos - 1)
Case 2
If DotPos = 0 Then DotPos = Len(FullPath)
SplitPath = Mid(FullPath, DotPos)
Case Else
Err.Raise vbObjectError + 1, "SplitPath Function", "Invalid Parameter!"
End Select
End Function
Function CleanFileName(StrText As String) As String
Dim xStripChars As String
Dim xLen As Integer
Dim I As Integer
xStripChars = "/\[]:=," & Chr(34)
xLen = Len(xStripChars)
StrText = Trim(StrText)
For I = 1 To xLen
StrText = Replace(StrText, Mid(xStripChars, I, 1), "")
Next
CleanFileName = StrText
End Function
Function GetFiles(xFldPath As String) As String()
On Error Resume Next
Dim xFile As String
Dim xFileArr() As String
Dim xArr() As String
Dim I, x As Integer
x = 0
ReDim xFileArr(1)
xFileArr(1) = xFldPath '& "\"
xFile = Dir(xFileArr(1) & "*.*")
Do Until xFile = ""
x = x + 1
xFile = Dir
Loop
ReDim xArr(0 To x)
x = 0
xFile = Dir(xFileArr(1) & "*.*")
Do Until xFile = ""
xArr(x) = xFile
x = x + 1
xFile = Dir
Loop
GetFiles = xArr()
End Function
Sub MergeDoc(WdApp As Word.Application, xFileName As String, Doc As Document)
Dim xNewDoc As Document
Dim xSec As Section
Set xNewDoc = WdApp.Documents.Open(filename:=xFileName, Visible:=False)
Set xSec = Doc.Sections.Add
xNewDoc.Content.Copy
xSec.PageSetup = xNewDoc.PageSetup
xSec.Range.PasteAndFormat wdFormatOriginalFormatting
xNewDoc.Close
End Sub 3. 도구>참조를 클릭하여참조대화 상자를 엽니다。Microsoft Excel 개체 라이브러리,Microsoft Scripting Runtime및Microsoft Word 개체 라이브러리확인란을 선택한 후확인버튼을 클릭합니다。 스크린샷 참조:

4. F5키를 누르거나실행버튼을 클릭하여 코드를 실행합니다。 그러면다른 이름으로 저장대화 상자가 나타납니다。 파일을 저장할 폴더를 지정하고 PDF 파일의 이름을 입력한 후저장버튼을 클릭합니다。 스크린샷 참조:

5. 그런 다음Microsoft Outlook대화 상자가 나타나면확인버튼을 클릭합니다。

이제 선택한 이메일과 모든 첨부파일이 단일 PDF 파일으로 저장되었습니다。
참고: 이 VBA 스크립트는 Microsoft Word 및 Excel 첨부파일에만 적용됩니다。
Outlook 에서 선택한 이메일을 다양한 형식의 파일로 쉽게 저장하세요:
대량 저장유틸리티를 사용하면Kutools for Outlook여러 개의 선택된 이메일을 개별적으로 HTML 형식 파일, Txt 형식 파일, Word 문서, CSV 파일 및 PDF 파일으로 Outlook 에 아래 스크린샷과 같이 쉽게 저장할 수 있습니다。Kutools for Outlook 의 무료 버전을 지금 다운로드하세요!

관련 문서:
- Excel 에서 명령 단추를 사용하여 활성 워크시트를 PDF 파일으로 저장하는 방법은 무엇인가요?
- 워크시트를 PDF 파일으로 저장하고 Outlook 을 통해 첨부파일로 이메일을 보내는 방법은 무엇인가요?
- Excel 에서 선택 영역 또는 전체 통합문서를 PDF 로 저장하는 방법은 무엇인가요?
최고의 Office 생산성 도구
Kutools for Outlook 의 완전히 새로운 버전을 100+가지 놀라운 기능과 함께 경험해 보세요!지금 다운로드하세요!
🤖KUTOOLS AI:고급 AI 기술을 활용하여 이메일 회신, 요약, 최적화, 확장, 번역, 작성 등 이메일 관련 작업을 손쉽게 처리합니다。
📧이메일 자동화:자동 회신(POP 및 IMAP 지원)/이메일 예약 발송/이메일 발송 시 규칙에 따라 자동 참조/숨은 참조/자동 전달(고급 규칙)/자동 인사말 추가/수신자 여러 명이 포함된 이메일을 자동으로 개별 메시지로 분할...
📨이메일 관리:이메일 회수/제목 등을 기준으로 피싱 이메일 차단/중복된 이메일 삭제/고급 검색/폴더 정리...
📁첨부파일 프로:일괄 저장/일괄 분리/일괄 압축/자동 저장/자동 분리/자동 압축...
🌟인터페이스 마법:😊더 예쁘고 멋진 이모지 제공/중요 이메일 수신 시 알림/Outlook 종료 대신 최소화...
👍한 번의 클릭으로 해결:모두 회신(첨부 파일 포함)/피싱 이메일 방지/🕘발신자의 현재 시간 시간대 표시...
👩🏼🤝👩🏻연락처 및 캘린더:선택한 이메일에서 연락처 추가 일괄 생성/연락처 그룹를 개별 그룹으로 분할/생일 알림 제거...
Kutools 를 선호하는 언어로 사용하세요 – 영어, 스페인어, 독일어, 프랑스어, 중국어 및 40+개의 다른 언어를 지원합니다!
한 번의 클릭으로 즉시 Kutools for Outlook 의 잠금을 해제하세요。 더 이상 기다리지 마시고 지금 다운로드하여 업무 효율을 높이세요!


🚀 한 번의 클릭으로 다운로드 — 모든 Office 애드인 받기
강력히 권장: Kutools for Office (5-in-1)
한 번의 클릭으로다섯 개의 설치 프로그램을동시에 다운로드하세요 —Kutools for Excel, Outlook, Word, PowerPoint및Office Tab Pro.지금 다운로드하세요!
- ✅한 번의 클릭으로 편리하게: 다섯 개의 설치 패키지를 한 번에 다운로드하세요。
- 🚀모든 Office 작업에 대비 완료: 필요한 시점에 필요한 애드인을 설치하세요。
- 🧰포함됨: Kutools for Excel / Kutools for Outlook / Kutools for Word / Office Tab Pro / Kutools for PowerPoint