我正在尝试将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
方法。
使用上述内容我目前正在收到一个未找到的"名称参数"错误。我已经在互联网上寻找其他地方,但似乎无法找到解决方案。
答案 0 :(得分:1)
MailItem.SaveAs "somefile.doc", olDoc
不接受任何参数。它使用应用程序级默认设置。
我认为这里的解决方法是两步,
第1步
使用Document.ExportAsFixedFormat "somefile.pdf", 17
转换为RTF或文档
步骤2使用文字自动化,(参考文字对象14.0) 使用fixedformat将其转换为pdf。
#!/usr/bin/perl
use strict;
use warnings;
my $date1;
my $date2;
my $expr = q{select * from foo where ts>@(-2 days) and ts < @(-1 hour)};
if( $expr =~ m#\@\((.*?)\) and .*? \@\((.*?)\)# ){
$date1 = $1;
$date2 = $2;
}
my $expr1 = `date --date=$date1 +%s`;
my $expr2 = `date --date=$date2 +%s`;
#now search and replace the $expr
$expr =~ s#\@\((.*?)\)#$expr1;
$expr =~ s#< \@\((.*?)\)#<.$expr2;
print "Final expression is $expr\n";
答案 1 :(得分:1)
无需使用MailItem类的 SaveAs 方法。 Inspector类的 WordEditor 属性返回表示邮件正文的Word Document类的实例。您可以直接从Outlook调用Document类的 ExportAsFixedFormat 方法,从而避免任何磁盘操作。有关详细信息,请参阅Chapter 17: Working with Item Bodies。
答案 2 :(得分:1)
我使用了Krishna和Eugene Astafiev发布的答案的组合来生成以下代码,现在将生成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
属性的工作代码。
答案 3 :(得分:-1)
只有将原始电子邮件格式化为支持单词转换的文档时,才能使用此功能。
例如,如果您尝试将自定义表单打印到PDF,则此操作将失败,因为检查器将始终将NOTHING传回给单词编辑器。