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

时间:2011-03-02 04:05:29

标签: vba excel-vba clipboard excel

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

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

  

您要保存剪贴板吗?

VBA中是否有一个绕过此提示的命令?

7 个答案:

答案 0 :(得分:29)

我可以提供两个选项

  1. 直接复制
  2. 根据你的描述,我猜你正在做类似

    的事情
    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. 取消提示
    2. 您可以通过设置

      来阻止所有提醒弹出窗口
      Application.DisplayAlerts = False
      

      [编辑]

      1. 仅复制值:不要使用复制/粘贴
      2. 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)