当我关闭Excel VBA工作簿时,如何禁用剪贴板提示?

4
所以我正在处理多个工作簿,从每个工作簿的Sheet1中复制所有数据到主工作簿上的各自工作表中。在这样做之后,我已经编码关闭了多个工作簿。但是,一个令人讨厌的提示询问是否要一直保留复制的数据在剪贴板中不断地弹出,我希望它不会弹出,或者当它弹出时,自动选择“否”。
我知道有类似的问题已经被问过,但对我没有用,我认为这是因为我有一个矩形区域的数据,而不仅仅是一列?我真的很新vba,但我尝试在Excel VBA中禁用关闭工作簿时的剪贴板提示代码中进行操作,但我没有成功。
这是我的原始代码:
Sub CFM56copydata()
Dim wbk As Workbook
'The workbook is opened using the text from a textbox in a userform i.e:
strFirstFile = Userform1.dog.Text
Set wbk = Workbooks.Open(strFirstFile)
With wbk.Sheets("Sheet1")
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
End With
Set wbk2 = ThisWorkbook
wbk2.Sheets("dog").Range("A1").Insert
wbk.Close
End Sub

以下是我尝试对其进行调整,以避免完全使用剪贴板。 (但不起作用,在第12行给我一个调试错误)

Sub fix()
Dim wbk As Workbook
strFirstFile = Userform1.CFM56path.Text
Set wbk = Workbooks.Open(strFirstFile)
Set wbk2 = ThisWorkbook
Dim rSrc As Range
Dim rDst As Range
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Set rSrc = Selection
Set rDst = wbk2.Sheets("dog").Cells("A1").Resize(rSrc.Rows.Count, rSrc.Columns.Count)
rDst = rSrc
wbk.Close
End Sub
2个回答

5
如果您将wbk.Close语句更改为以下内容,则应该可以正常工作:
Application.DisplayAlerts = False
wbk.Close
Application.DisplayAlerts = True

谢谢!这两个建议都很好,而且都起作用了!最终我使用了清空剪贴板的代码,因为这样可以少写一行。 - SRoy

5
如果剪贴板提示是问题所在,只需在粘贴完成后清空它即可。
wbk2.Sheets("dog").Range("A1").Insert
Application.CutCopyMode = False
wbk.Close

谢谢!这两个建议都很好,而且都起作用了!最终我使用了清空剪贴板的代码,因为这样可以少写一行。 - SRoy
2
要明确的是,这不会清空剪贴板。它只会删除复制区域周围的“蚂蚁线”。如果您复制了足够多的数据,仍然可能会收到该消息。 - guitarthrower

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接