Tin*_*ing 5 excel vba excel-vba

If IsWorkbookOpen("CONTRACT\CONTRACTLIST_Cement.xlsx") Then
x = 0
Else
Application.DisplayAlerts = False
ActiveWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
End If
Run Code Online (Sandbox Code Playgroud)
嗨,尽管使用上面的代码,仍然偶尔出现另存为提示并影响程序.有谁知道如何完全阻止它?问题是,在我点击"保存"后,它会提醒我它仍处于打开状态.

试试下面的代码
它总是很好的开发参考工作簿而不是 ActiveWorkbook
Sub test()
If IsWorkbookOpen("CONTRACT\CONTRACTLIST_Cement.xlsx") Then
x = 0
Else
Application.DisplayAlerts = False
ThisWorkbook.Save
ThisWorkbook.Close False
Application.DisplayAlerts = True
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
您可以使用对象Workbook_BeforeSave中的事件ThisWorkbook来捕获用户选择“另存为”(或使用键盘快捷键),这将导致显示“另存为”提示并将其SaveAsUI设置为 true。如果SaveAsUI为 true,则意味着用户正在尝试将文件另存为其他内容,因此您可以取消“另存为”操作。
打开 Visual Basic 窗口(Alt + F11)并将以下代码放入ThisWorkbook.
禁用另存为
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If (SaveAsUI = True) Then
MsgBox "Sorry. I can't have you saving this file as something else."
Cancel = True
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
MsgBox如果需要,您可以删除该行;如果您想通知用户该功能已被禁用,我将其放在那里作为示例
要禁用“保存”和“另存为”功能,您需要删除该语句if并取消“保存”操作,无论是否显示“另存为”提示。
禁用保存和另存为
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "Sorry. I can't have you saving this file at all."
Cancel = True
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您只想禁用“保存”操作,则只需查找用户正在保存的位置,但不显示SaveAsUI (即用户只是保存文件)。
禁用保存
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If (SaveAsUI = False) Then
MsgBox "Sorry. I can't have you saving any updates to this file."
Cancel = True
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
最后,请注意,如果用户只是关闭文件,用户仍然会收到保存提示。用户将无法保存并且文件将关闭,但如果您希望体验更清晰,则需要进行额外的更改。当用户关闭文件时,Excel 会检查变量ThisWorkbook.Saved以查看文件是否已保存。如果为 false,则会提示用户保存文件。为了防止这种情况发生,我们可以将此布尔值设置为 true 而不保存,从而“欺骗”Excel 认为文件已保存
禁用“保存”和“另存为”,包括在用户尝试关闭文件后
在您的代码后面添加以下代码Workbook_BeforeSave。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Saved = True
MsgBox "Click OK to continue closing this file. Changes will not be saved."
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40437 次 |
| 最近记录: |