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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在工作簿关闭的Excel VBA中禁用剪贴板提示相关的知识,希望对你有一定的参考价值。

我有一个Excel工作簿,使用VBA代码打开另一个工作簿,将一些数据复制到原始工作簿,然后关闭第二个工作簿。

当我关闭第二个工作簿(使用Application.Close)时,我得到一个提示:

要保存剪贴板吗?

VBA中有一个命令会绕过此提示吗?

答案

我可以提供两种选择

  1. 直接复制

根据你的描述,我猜你正在做类似的事情

Set wb2 = Application.Workbooks.Open("YourFile.xls")
wb2.Sheets("YourSheet").[<YourRange>].Copy
ThisWorkbook.Sheets("SomeSheet").Paste
wb2.close

如果是这种情况,则无需通过剪贴板进行复制。此方法直接从源复制到目标。剪贴板中没有数据=没有提示

Set wb2 = Application.Workbooks.Open("YourFile.xls")
wb2.Sheets("YourSheet").[<YourRange>].Copy ThisWorkbook.Sheets("SomeSheet").Cells(<YourCell")
wb2.close
  1. 禁止提示

您可以通过设置来阻止所有警报弹出窗口

Application.DisplayAlerts = False

[编辑]

  1. 仅复制值:根本不使用复制/粘贴

Dim rSrc As Range
Dim rDst As Range
Set rSrc = wb2.Sheets("YourSheet").Range("YourRange")
Set rDst = ThisWorkbook.Sheets("SomeSheet").Cells("YourCell").Resize(rSrc.Rows.Count, rSrc.Columns.Count)
rDst = rSrc.Value
另一答案

如果我可以再添加一个解决方案:您只需使用以下命令取消剪贴板:

Application.CutCopyMode = False
另一答案

我在过去遇到过这个问题 - 如果你在退出的时候实际上并不需要剪贴板,那么你可以使用相同的简单解决方案。只需清除剪贴板即可。 :)

ActiveCell.Copy

克里斯

另一答案

如果您不想保存任何更改,并且在使用宏保存Excel文件时不希望保存提示,那么这段代码可能对您有所帮助

Sub Auto_Close()

     ThisWorkbook.Saved = True

End Sub

因为Saved属性设置为True,Excel会响应,就好像工作簿已经保存并且自上次保存以来没有发生任何更改,因此没有保存提示。

另一答案

有一个简单的工作。只有在剪贴板中有大量数据时才会出现警报。只需在关闭工作簿之前复制一个随机单元格,它就不会再出现了!

另一答案

关闭前只需清除剪贴板即可。

Application.CutCopyMode=False
ActiveWindow.Close
另一答案

如果替换行,建议的解决方案编辑将起作用

Set rDst = ThisWorkbook.Sheets("SomeSheet").Cells("YourCell").Resize(rSrc.Rows.Count, rSrc.Columns.Count)

Set rDst = ThisWorkbook.Sheets("SomeSheet").Range("YourRange").Resize(rSrc.Rows.Count, rSrc.Columns.Count)

以上是关于在工作簿关闭的Excel VBA中禁用剪贴板提示的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

Excel VBA 从关闭的工作簿中读取数据,带有 ADODB、动态范围和标题可选

VBA 搜索已关闭的工作簿以获取价值?

VBA Excel 备份:通过 VBA 以新名称保存当前工作簿的副本,保留 VBA 脚本,无提示