vba - 如何在关闭工作簿时禁用 Excel VBA 中的剪贴板提示?

标签 vba excel 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

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

最佳答案

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

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

关于vba - 如何在关闭工作簿时禁用 Excel VBA 中的剪贴板提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140789/

相关文章:

c# - 在 C# 中使用 interop.excel 检测空白 Excel 单元格

excel - 每次使用 CommandButton_click 选择不同的单元格

excel - MATLAB:从 100,000 行和 300 列的 Excel 工作表中将数据导入 Matlab

c# - 更新单元格并保存 excel 后,基于此单元格的公式不会重新计算

r - 如何在R中正确读取剪贴板中的中文?

c# - 将文本复制到剪贴板

excel - VBA从ProcessID创建IE对象

arrays - 为什么我在将范围分配给变体数组时遇到问题

Excel VBA - 在一定范围内插入多列

c++ - 剪贴板数据上使用的 GlobalSize 函数导致错误