我有一个Excel工作簿,它使用VBA代码打开另一个工作簿,将一些数据复制到原始工作簿中,然后关闭第二个工作簿。
当我关闭第二个工作簿(使用Application.Close
)时,我会收到提示:
您要保存剪贴板吗?
VBA中是否有一个绕过此提示的命令?
答案 0 :(得分:29)
我可以提供两个选项
根据你的描述,我猜你正在做类似
的事情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
您可以通过设置
来阻止所有提醒弹出窗口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
答案 1 :(得分:11)
如果我可以再添加一个解决方案:您只需使用以下命令取消剪贴板:
Application.CutCopyMode = False
答案 2 :(得分:3)
我在过去遇到过这个问题 - 如果你在退出的时候实际上并不需要剪贴板,那么你可以使用我所拥有的同样简单的解决方案。只需清除剪贴板即可。 :)
ActiveCell.Copy
克里斯
答案 3 :(得分:0)
如果您不想保存任何更改,并且在使用Macro保存Excel文件时不希望保存提示,那么这段代码可能对您有所帮助
Sub Auto_Close()
ThisWorkbook.Saved = True
End Sub
由于Saved
属性设置为True
,因此Excel会像保存工作簿一样进行响应,并且自上次保存以来未发生任何更改,因此没有“保存”提示。
答案 4 :(得分:0)
有一个简单的工作。只有在剪贴板中有大量数据时才会出现警报。只需在关闭工作簿之前复制一个随机单元格,它就不会再出现了!
答案 5 :(得分:0)
关闭前只需清除剪贴板。
Application.CutCopyMode=False
ActiveWindow.Close
答案 6 :(得分:-1)
如果替换行
,建议的解决方案编辑有效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)