首页 文章

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

提问于
浏览
10

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

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

是否要保存剪贴板 .

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

7 回答

  • 0

    我可以提供两种选择

    • Direct copy

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

    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
    
    • Suppress prompt

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

    Application.DisplayAlerts = False
    

    [编辑]

    • To copy values only :根本不要使用复制/粘贴
    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
    
  • 11

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

    Application.CutCopyMode = False
    
  • -1

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

    ActiveCell.Copy
    

    克里斯

  • 28

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

    Sub Auto_Close()
    
         ThisWorkbook.Saved = True
    
    End Sub
    

    由于 Saved 属性设置为 True ,因此Excel会像保存工作簿一样进行响应,并且自上次保存以来未发生任何更改,因此没有“保存”提示 .

  • 0

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

  • 3

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

    Application.CutCopyMode=False
    ActiveWindow.Close
    
  • 0

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

    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)
    

相关问题