Excel VBA 关闭当前工作簿错误 1004

Posted

技术标签:

【中文标题】Excel VBA 关闭当前工作簿错误 1004【英文标题】:Excel VBA close current workbook Error 1004 【发布时间】:2012-02-10 19:10:03 【问题描述】:

我在 Excel 工作簿中有一些 VBA 代码。 我有一个单元格,我想用它来关闭工作簿而不保存(而不是使用 excel 右上角的常用 (X) 关闭按钮。

如果我使用 (X) 按钮关闭工作簿,则以下代码效果很好。 但是,如果我按下工作表上的“关闭”按钮单元格,则会出现 1004 错误。

谁能帮忙?

在按钮所在的工作表上

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Cells(ActiveCell.Row, ActiveCell.Column) = "CLOSE" Then

    CloseNoSave
End If

End Sub

在本手册中

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    CloseNoSave

End Sub

在模块中

Sub CloseNoSave()

    ThisWorkbook.Close savechanges:=False
End Sub

【问题讨论】:

【参考方案1】:

为什么不在Selection 事件中使用一段代码

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If ActiveCell.Value = "CLOSE" Then
        ThisWorkbook.Saved = True
        ThisWorkbook.Close
    End If
End Sub

【讨论】:

感谢 brettdj !做到了!我还添加了 ThisWorkbook.Saved = True 到 Workbook_BeforeClose 并且我现在可以关闭工作簿而无需保存按 X 或工作表上的“关闭”按钮! 好吧,看来我还是有同样的问题。为了使 excel 2007 尽可能“整洁”,我在 windowActivate/windowDeactivate 中添加了以下代码。如果功能区被隐藏,然后按 X 或 CLOSE 按钮,则会导致错误 1004 再次发生。任何想法如何解决? Private Sub Workbook_WindowActivate(ByVal Wn As Window) Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", false)" End Sub Private Sub Workbook_WindowDeactivate(ByVal Wn As Window) Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"" , true)" 结束子

以上是关于Excel VBA 关闭当前工作簿错误 1004的主要内容,如果未能解决你的问题,请参考以下文章

运行时错误 1004 文档未使用 Vba Excel 2016 保存

excel运行VBA,出现1004错误

VBA 另存为运行时错误 1004

在工作簿关闭的Excel VBA中禁用剪贴板提示

远离 Excel 工作簿/VBA - 技术升级 [关闭]

Excel 2010 vba 复制选择工作表,保存并关闭两个工作簿