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

Cra*_*g T 13 excel clipboard vba excel-vba

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

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

要保存剪贴板吗?

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

chr*_*sen 32

我可以提供两种选择

  1. 直接复制

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

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

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

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

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

Application.DisplayAlerts = False
Run Code Online (Sandbox Code Playgroud)

[编辑]

  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
Run Code Online (Sandbox Code Playgroud)

  • "一行"方法的一个问题是,无法指定"xlpastevalues" - 返回剪贴板! (2认同)

小智 15

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

Application.CutCopyMode = False
Run Code Online (Sandbox Code Playgroud)