我想通过宏将电子邮件另存为Word文件,然后通过Word将其替换为转换后的PDF文件。转换部分工作正常 - 问题是当我尝试删除原始的.doc文件时。
Dim objWrd As Object
Dim objWrdDoc As Object
Dim wrdCurrentPrinter As String
Set objWrd = CreateObject("Word.Application")
Set objWrdDoc = objWrd.Documents.Open(filePath & fileName)
''Print' file as PDF - current printer is stored so it can be reverted back afterwards
wrdCurrentPrinter = objWrd.ActivePrinter
objWrd.ActivePrinter = "Microsoft Print To PDF"
'File name is specified here to avoid Save As prompt. PrintToFile property is 'True'
objWrd.PrintOut , , , filePath & Replace(fileName, ".doc", ".pdf"), , , , , , , True
objWrd.ActivePrinter = wrdCurrentPrinter
objWrd.Quit
Set objWrd = Nothing
Kill filePath & fileName
在Kill filePath & fileName
我收到错误70 - 权限被拒绝。
我可以手动删除文件而没有任何问题,如果我添加一个断点并逐步执行“杀死”操作。在Word关闭和Kill命令之间甚至有轻微延迟时,它会起作用。因此,我怀疑代码处理速度如此之快,以至于在运行命令时文件仍处于打开状态。
我有一种感觉,我可能需要沿着创建延迟的路线走下去,我在Outlook中遇到了麻烦。这是可能的解决方案还是还有其他我错过的东西?
答案 0 :(得分:0)
通过在完全退出Word之前关闭Word文档,我能够始终如一地工作:
objWrdDoc.Close
objWrd.Quit
Set objWrd = Nothing
自添加此行并使用各种电子邮件进行测试后,未出现错误。