将邮件项目打印为 pdf
Print mail item as pdf
我正在尝试将 Outlook 文件夹中的所有邮件项目保存为 PDF。
Sub pdfConversion()
Dim outApp As Object, objOutlook As Object, objFolder As Object, myItems As Object, myItem As Object
Dim psName As String, pdfName As String
Set outApp = CreateObject("Outlook.Application")
Set objOutlook = outApp.GetNamespace("MAPI")
Set objFolder = objOutlook.GetDefaultFolder(olFolderInbox).Folders("PDF Conversion")
Set myItems = objFolder.Items
For Each myItem In myItems
myItem.PrintOut copies:=1, preview:=False, ActivePrinter:="Adobe PDF", printtofile:=True, _
collate:=True, prtofilename:="C:\Users\lturner\Documents\" & myItem.Subject & ".pdf"
Next myItem
End Sub
我使用的是 Outlook 2007,它没有将邮件另存为 PDF 的选项,因此我正在尝试使用 .PrintOut
方法。
使用上面的方法我目前收到一个 "Named argument not found" 错误。我在互联网上的其他地方看过,但似乎找不到解决方案。
MailItem.Printout
不接受任何参数。它使用应用程序级别的默认设置。
我认为这里的解决方法是两步,
第一步
使用 MailItem.SaveAs "somefile.doc", olDoc
转换为 RTF 或文档
第 2 步使用单词自动化,(参考单词对象 14.0)
使用 fixedformat.
将其转换为 pdf
Document.ExportAsFixedFormat "somefile.pdf", 17
不需要使用 MailItem class 的 SaveAs 方法。 Inspector WordEditor 属性 class returns 代表邮件正文的 Word 文档 class 实例。您可以直接从 Outlook 调用文档 class 的 ExportAsFixedFormat 方法,避免任何磁盘操作。有关详细信息,请参阅 Chapter 17: Working with Item Bodies。
我使用了 and 发布的答案的组合来生成下面的代码,它现在将从 myItem
.
中生成一个 PDF 文档
Dim objDoc As Object, objInspector As Object
For Each myItem In myItems
fileName = Replace(myItem.Subject, ":", "")
Set objInspector = myItem.GetInspector
Set objDoc = objInspector.WordEditor
objDoc.ExportAsFixedFormat folderPath & fileName & ".pdf", 17
Set objInspector = Nothing
Set objDoc = Nothing
Next myItem
发布这个,以便将来偶然发现问题的任何人都可以看到使用 WordEditor
属性.
的工作代码
仅当原始电子邮件的格式为支持单词转换的文档时,这才有效。
例如,如果您尝试将自定义表单打印为 PDF,那么这将失败,因为 Inspector 将始终为 word editor 传回 NOTHING。
我正在尝试将 Outlook 文件夹中的所有邮件项目保存为 PDF。
Sub pdfConversion()
Dim outApp As Object, objOutlook As Object, objFolder As Object, myItems As Object, myItem As Object
Dim psName As String, pdfName As String
Set outApp = CreateObject("Outlook.Application")
Set objOutlook = outApp.GetNamespace("MAPI")
Set objFolder = objOutlook.GetDefaultFolder(olFolderInbox).Folders("PDF Conversion")
Set myItems = objFolder.Items
For Each myItem In myItems
myItem.PrintOut copies:=1, preview:=False, ActivePrinter:="Adobe PDF", printtofile:=True, _
collate:=True, prtofilename:="C:\Users\lturner\Documents\" & myItem.Subject & ".pdf"
Next myItem
End Sub
我使用的是 Outlook 2007,它没有将邮件另存为 PDF 的选项,因此我正在尝试使用 .PrintOut
方法。
使用上面的方法我目前收到一个 "Named argument not found" 错误。我在互联网上的其他地方看过,但似乎找不到解决方案。
MailItem.Printout
不接受任何参数。它使用应用程序级别的默认设置。
我认为这里的解决方法是两步,
第一步
使用 MailItem.SaveAs "somefile.doc", olDoc
转换为 RTF 或文档
第 2 步使用单词自动化,(参考单词对象 14.0) 使用 fixedformat.
将其转换为 pdfDocument.ExportAsFixedFormat "somefile.pdf", 17
不需要使用 MailItem class 的 SaveAs 方法。 Inspector WordEditor 属性 class returns 代表邮件正文的 Word 文档 class 实例。您可以直接从 Outlook 调用文档 class 的 ExportAsFixedFormat 方法,避免任何磁盘操作。有关详细信息,请参阅 Chapter 17: Working with Item Bodies。
我使用了 myItem
.
Dim objDoc As Object, objInspector As Object
For Each myItem In myItems
fileName = Replace(myItem.Subject, ":", "")
Set objInspector = myItem.GetInspector
Set objDoc = objInspector.WordEditor
objDoc.ExportAsFixedFormat folderPath & fileName & ".pdf", 17
Set objInspector = Nothing
Set objDoc = Nothing
Next myItem
发布这个,以便将来偶然发现问题的任何人都可以看到使用 WordEditor
属性.
仅当原始电子邮件的格式为支持单词转换的文档时,这才有效。
例如,如果您尝试将自定义表单打印为 PDF,那么这将失败,因为 Inspector 将始终为 word editor 传回 NOTHING。