我有一本工作簿" C:/abc.xlsm"。
然后我尝试将其保存为" C:/mno/xyz.xlsm"。
我想捕获保存操作(我可以使用Workbook_BeforeSave来执行此操作),然后我需要查看所需的目标路径。
例如,我希望能够做到这样:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim destinationPath As String
destinationPath = CaptureDestionationPath
If InStr(1, destinationPath, "C:") Then
Dim msgboxAnswer As Integer
msgboxAnswer = MsgBox("It seems you are trying to save the file on your local drive. Is that intended", vbYesNo + vbQuestion, "")
If msgboxAnswer = vbNo Then
Cancel = True
End If
End If
End Sub
至于我的尝试:浏览Workbook对象属性并进行网络搜索。
答案 0 :(得分:0)
示例:Before-Save
被取消,并显示另存为对话框。此对话框返回保存为路径,然后您可以对其进行验证。最后,事件已停用,因此Me.SaveAs fileSaveName
方法不会再次引发Before-Save
事件。
注意:您应该添加变量SaveAsUI
的if-check,以区分“另存为”和“简单保存”。
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
Dim fileSaveName
fileSaveName = Application.GetSaveAsFilename
If fileSaveName = False Then
Exit Sub
End If
If InStr(1, fileSaveName, "C:") Then
Dim msgboxAnswer As Integer
msgboxAnswer = MsgBox("It seems you are trying to save the file on your local drive. Is that intended", vbYesNo + vbQuestion, "")
If msgboxAnswer = vbNo Then
Exit Sub
End If
End If
Application.EnableEvents = False
Me.SaveAs fileSaveName
Application.EnableEvents = True
End Sub