【发布时间】:2017-12-23 16:35:37
【问题描述】:
我有一个发送给用户以完成并以电子方式提交的表单,它实际上只是发送一封带有文档作为附件的自动电子邮件。为了在电子邮件中附加文档,它首先会自动保存到用户桌面。我想做的是找到一种在提交后删除此文档的方法。我在网上找到了一些例子,但没有一个对我有用,坦率地说,如果你有一行 ActiveDocument.Close False 后跟删除文件路径的行,文档关闭并且宏是 no,我看不出它会如何工作我能想象到的运行时间更长。
我找到了 1 个来自其他用户的问题的未标记答案:Delete doc when macro finishes
Sub DeleteCurrentDoc()
Dim Doc1 As Document
Dim deletepath As String
'get path of this document to delete it later
deletepath = ActiveDocument.FullName
'Close the document we are going to delete (Word should remain Open
ActiveDocument.Close False
'Delete it
Kill (deletepath)
'Tidy up and close Word (Optional Line, delete if necessary)
Application.Quit
End Sub
还有另一个在 word.tips.net 上: https://wordribbon.tips.net/T011642_Deleting_the_Open_Document_File
Sub DeleteThisFile()
Dim MyFile As String
MyFile = ActiveDocument.Path & "\" & ActiveDocument.Name
If MsgBox(MyFile & " will be deleted permanently", _
vbYesNo, "Delete this File?") = vbYes Then
ActiveDocument.Close (wdDoNotSaveChanges)
Kill MyFile
End If
End Sub
我尝试查看代码以打开一个新文档并每次都向其中添加一个宏,但我觉得这进入了一些不需要的领域。我真的很想找到一种方法从用户的电脑中删除文件,因为他们只能根据请求访问单个表单。
我使用的是 Word 2013,我不确定上述示例是否适用于早期版本,而我的版本不适用,这可能吗?
感谢您的帮助。
更新 我目前正在尝试一种解决方法,文档将在发送附件后保存为用户的只读文件,这样他们就可以保存他们的记录。虽然我在工作簿中设置的只读保护没有应用,但它正在恢复为原始文件的唯一保护形式,我无法找出原因。
`ActiveDocument.SaveAs2 FileName:="C:\Users\" & curUser & "\Desktop\My User Request_" & _
Format(Date, "mm.dd.yy") & ".docx", fileformat:=wdFormatDocumentDefault
Selection.HomeKey wdStory
With ActiveDocument
.Protect 3, Password:="password"
.Save
End With`
我在这里做的是用不同的文件名重新保存它,并作为非启用宏的工作簿,然后我删除了我最初保存到他们桌面上的临时文件,需要发送附件,只留下一个他们填写的表格副本,他们无法再对其进行任何更改。
我尝试了几种添加保护然后保存为的方法,每次打开 docx 时,保护仍然是表单而不是只读。
理想情况下,我真的很想知道如何成功删除活动文档,以便我可以将 pdf 副本保存到用户桌面,然后删除 Word 文档。
【问题讨论】: