我有一个Excel工作簿,其中使用VBA代码打开另一个工作簿,将一些数据复制到原始工作簿中,然后关闭第二个工作簿。
当我关闭第二个工作簿(使用Application.Close
)时,会提示:
是否要保存剪贴板。
在VBA中是否有一个命令可以绕过此提示?
我有一个Excel工作簿,其中使用VBA代码打开另一个工作簿,将一些数据复制到原始工作簿中,然后关闭第二个工作簿。
当我关闭第二个工作簿(使用Application.Close
)时,会提示:
是否要保存剪贴板。
在VBA中是否有一个命令可以绕过此提示?
我可以提供两个选项
根据您的描述,我猜测您正在进行类似于
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
你可以通过设置 alert()
函数来防止所有的弹出提示框。
Application.DisplayAlerts = False
[编辑]
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
关闭前清空剪贴板。
Application.CutCopyMode=False
ActiveWindow.Close
有一个简单的解决方法。当您的剪贴板中有大量数据时,警告才会出现。在关闭工作簿之前,只需复制一个随机单元格,它就不会再出现了!
Sub Auto_Close()
ThisWorkbook.Saved = True
End Sub
Saved
属性被设置为True
,Excel会响应得像工作簿已经保存过一次,并且自上次保存以来没有进行任何更改,所以不会出现保存提示。如果您替换该行,则建议的解决方案编辑可行。
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)