关闭文件后立即删除文件 - '权限被拒绝'错误

时间:2017-01-09 16:13:12

标签: vba outlook-vba

我想通过宏将电子邮件另存为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中遇到了麻烦。这是可能的解决方案还是还有其他我错过的东西?

1 个答案:

答案 0 :(得分:0)

通过在完全退出Word之前关闭Word文档,我能够始终如一地工作:

objWrdDoc.Close
objWrd.Quit
Set objWrd = Nothing

自添加此行并使用各种电子邮件进行测试后,未出现错误。