【发布时间】:2021-07-20 09:42:35
【问题描述】:
我想制作一个 Outlook 宏来保存邮件正文和 HEADER,就好像它是由 Outlook 或 pdfcreator 打印出来的一样。发件人、抄送、密送、时间、收件人、主题是必须在 pdf 中的数据。
使用这篇文章和其他文章:
我编写了这个宏:
- 在 Outlook 中接收选定的邮件
- 在硬编码文件夹中创建一个新文件夹
- 使用 wordeditor 将正文邮件打印为 PDF
我的问题是 wordEditor objecto 没有保存 mailItem 的 HEADER。这对我来说很重要,因为我有发送者、发送时间、电子邮件地址、主题等的信息我想知道如何从 wordEditor 对象中添加标题。
Option Explicit
Sub mail_to_pdf_sof()
Dim outApp As Object, objOutlook As Object, objFolder As Object, myItems As Object, myItem As Object, coll As Object, Sel As Object, objInspector As Object, objDoc As Object
Dim psName As String, pdfName As String, strFolderpath As String, Path As String, time_record As String, FileName As String
Dim rol As Integer, indice As Integer, i As Integer
Set outApp = CreateObject("Outlook.Application")
Set objOutlook = outApp.GetNamespace("MAPI")
' PATH TO SAVE PDFs
Path = "F:\"
Path = Path & Format(Date, "yyyy-mm-dd") & " - Mail to PDF" & "\"
On Error Resume Next
MkDir Path
On Error GoTo 0
' GET MAILS SELECTED IN OUTLOOK FOR THE CONVERSION AND SAVE TO PDF
Set coll = New VBA.Collection
If TypeOf Application.ActiveWindow Is Outlook.Inspector Then
coll.Add Application.ActiveInspector.CurrentItem
Else
Set Sel = Application.ActiveExplorer.Selection
For i = 1 To Sel.Count
coll.Add Sel(i)
Next
End If
' SET COUNTERS
rol = 1
indice = 1
time_record = Format(Now, "yyyymmddhhmm")
' SAVE EACH MAIL AS PDF BUT WITHOUT THE HEADER
For Each myItem In coll
' ELIMINATES CHARACTER THAT ARE NOT ALLOWD AND SET A MAX TO FILE NAME LENGTH
FileName = myItem.SenderName & " - " & myItem.Subject
FileName = Replace(FileName, ":", "")
FileName = Replace(FileName, "|", "-")
FileName = Replace(FileName, "/", "-")
FileName = Replace(FileName, "\", "-")
FileName = Replace(FileName, "\\", "-")
FileName = Replace(FileName, Chr(34), "")
If Len(FileName) > 90 Then
FileName = Left(FileName, 90)
End If
' SAVE AS PDF
Set objInspector = myItem.GetInspector
Set objDoc = objInspector.WordEditor
objDoc.ExportAsFixedFormat Path & time_record & " - " & rol & " - " & "Mail - " & FileName & ".pdf", 17
Set objInspector = Nothing
Set objDoc = Nothing
rol = rol + 1
indice = indice + 1
Next myItem
End Sub
不知道有没有人知道这个问题的合理解决方案,谢谢!
【问题讨论】:
-
选项显式在哪里?另请阅读最小、完整和可验证示例:stackoverflow.com/help/mcve
-
我是编码的初学者。它是 VBA,它很容易理解。复制并粘贴它就可以了。如果有人知道我要求的主题,他或她肯定知道我正在暴露的问题,因为它真的很常见。选项显式不会改变我的问题