我想要实现的是使用Save
函数将Word文档保存在两个地方。但它有两个缺点。首先,当我保存文件时Word会闪烁(因为它关闭会保存一个副本,它会变为活动文档,关闭,然后Word返回到原始文档)。其次,宏添加我的备份到最近的文件,尽管AddToRecentFiles:=False
如何避免两个错误?
Sub FileSave()
Dim currFile As String
Dim backup As String
backup = "C:\Users\" & Environ("UserName") & "\Documents\WordBackups\"
With ActiveDocument
If .Saved Or .Path = "" Then Exit Sub
If Dir(backup, vbDirectory) = "" Then
MkDir backup
MsgBox "Backup folder has been created.", vbInformation
End If
.Bookmarks.Add Name:="LastPosition"
Application.ScreenUpdating = False
.Save
currFile = .FullName
.SaveAs2 FileName:=backup & .Name, AddToRecentFiles:=False
End With
ActiveDocument.Close
Documents.Open FileName:=currFile
Selection.GoTo What:=wdGoToBookmark, Name:="LastPosition"
End Sub
答案 0 :(得分:1)
此代码检查文档是否包含需要保存的更改。如果没有,则进行备份。否则,如果文档具有文件路径(之前已保存),则保存文档并重新启动代码,则将进行备份。否则,将显示“另存为”对话框,以便可以将文档保存到路径,然后进行备份。
棘手的部分是宏应如何区分“我只打开并查看它”与“文档已保存,现在进行备份”。
一种可能性是检查是否存在文档变量或文档属性,由Save操作设置并由SaveAs删除。试试这个:
ActiveDocument.CustomDocumentProperties("MakeBackup").Value = True
If .Saved And ActiveDocument.CustomDocumentProperties("MakeBackup").Value = True Then
ActiveDocument.CustomDocumentProperties("MakeBackup").Value = False