关闭工作簿时,如何在excel vba中禁用剪贴板提示?

时间:2014-01-15 14:59:07

标签: excel vba excel-vba clipboard

所以我正在使用多个工作簿,我将Sheet1中的所有数据从每个工作簿复制到主工作簿上的相应工作表中。在我这样做之后,我将编码的多个工作簿关闭。然而,一个恼人的提示,询问我是否要将复制的数据保持在剪贴板上一直弹出,我想让它不弹出或者当它弹出时,我希望自动选择“否”。

我知道有一个类似的问题已被问过,但它对我不起作用,我在想它是因为我有一个矩形区域的数据而不仅仅是一列?我在vba上真的很新,但是我试着在Disable clipboard prompt in Excel VBA on workbook close中乱用代码,但我没有运气。

这是我的原始代码:

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

这是我试图调整它的方式,所以我完全避免使用clipbaord。 (没有用,在第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 个答案:

答案 0 :(得分:3)

如果您将wbk.Close声明更改为:

,它应该有效
Application.DisplayAlerts = False
wbk.Close
Application.DisplayAlerts = True

答案 1 :(得分:2)

如果剪贴板提示出现问题,请在完成粘贴后清空它。

wbk2.Sheets("dog").Range("A1").Insert
Application.CutCopyMode = False
wbk.Close