【问题标题】:How can I disable the clipboard prompt in excel vba when I close the workbook?关闭工作簿时如何禁用 excel vba 中的剪贴板提示?
【发布时间】:2014-01-15 14:59:07
【问题描述】:

因此,我正在处理多个工作簿,从中我将 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

这是我尝试调整它的方法,因此我完全避免使用剪贴板。 (没用,在第 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

【问题讨论】:

    标签: vba excel clipboard


    【解决方案1】:

    如果剪贴板提示是问题所在,请在粘贴完成后将其清空。

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

    【讨论】:

    • 谢谢!这些都是很好的建议,而且都奏效了!我最终使用代码来清空剪贴板,因为它少了一行
    • 明确地说,这不会清空剪贴板。它只会删除复制区域周围的“跳舞蚂蚁”。如果您复制了足够多的数据,您可能仍会收到该消息。
    【解决方案2】:

    如果您将 wbk.Close 语句更改为:

    Application.DisplayAlerts = False
    wbk.Close
    Application.DisplayAlerts = True
    

    【讨论】:

    • 谢谢!这些都是很好的建议,而且都奏效了!我最终使用代码来清空剪贴板,因为它少了一行
    猜你喜欢
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    相关资源
    最近更新 更多