Vba 运行时错误1004:工作表类的粘贴方法失败
关于这个错误以及如何修复有很多信息,但我已经尝试了很多,但都没有效果:请参见下面的问题代码块Vba 运行时错误1004:工作表类的粘贴方法失败,vba,excel,runtime-error,Vba,Excel,Runtime Error,关于这个错误以及如何修复有很多信息,但我已经尝试了很多,但都没有效果:请参见下面的问题代码块 Range("A1:K2").Select Selection.Copy Windows("EIL Depannage Register.xlsm").Activate Sheets("Raising Depannage").Select ActiveSheet.Unprotect Sheets("Import_Sheet").Select ActiveSheet.Unprotect Range("A1
Range("A1:K2").Select
Selection.Copy
Windows("EIL Depannage Register.xlsm").Activate
Sheets("Raising Depannage").Select
ActiveSheet.Unprotect
Sheets("Import_Sheet").Select
ActiveSheet.Unprotect
Range("A1").Select
Application.Wait (Now + TimeValue("00:00:10"))
ActiveSheet.Paste <<<<<error happens at this line
范围(“A1:K2”)。选择
选择,复制
Windows(“EIL Depannage Register.xlsm”)。激活
工作表(“提升折旧”)。选择
活动表。取消保护
工作表(“导入工作表”)。选择
活动表。取消保护
范围(“A1”)。选择
Application.Wait(现在+时间值(“00:00:10”))
你能这样试试吗
Range("A1:K2").Copy
Windows("EIL Depannage Register.xlsm").Activate
Sheets("Raising Depannage").Unprotect
Sheets("Import_Sheet").Unprotect
Sheets("Import_Sheet").Range("A1").Paste
编辑:
这样怎么样:
Dim wb As Workbook
Dim ws As Worksheet
set wb = activeworkbook
set ws = activesheet
Windows("EIL Depannage Register.xlsm").Activate
Sheets("Raising Depannage").Unprotect
Sheets("Import_Sheet").Unprotect
wb.ws.Range("A1:K2").Copy
Windows("EIL Depannage Register.xlsm").Activate
Sheets("Import_Sheet").Range("A1").Paste
播放一点,它应该会起作用。取消保护
命令正在取消您的。CutCopyMode
因此基本上没有要粘贴的内容。在启动复制和粘贴操作之前,您必须解除工作表的保护
Dim ws As Worksheet
Set ws = ActiveSheet
Windows("EIL Depannage Register.xlsm").Activate
With ActiveWorkbook
.Worksheets("Raising Depannage").Unprotect
With .Worksheets("Import_Sheet")
.Unprotect
ws.Range("A1:K2").Copy Destination:=.Range("A1")
End With
End With
我不喜欢使用ActiveSheet
来限定原始工作表,但您的代码没有指定工作簿或工作表,这让我没有什么选择。试试看
dim shSrc as worksheet
dim shTarget as worksheet
set shSrc =Workbooks("EIL Depannage Register.xlsm").Sheets("Raising Depannage")
set shTarget =Workbooks("EIL Depannage Register.xlsm").Sheets("Raising Depannage")
shSrc.unprotect
shTarget.unprotect
shSrc.Range("A1:K2").Copy
shTarget. Range("A1").Paste
shSrc.protect
shTarget.protect
set shsrc=nothing
set shtarget=nothing`
只需修复源和目标并验证范围代码的最后一行应该是:
Sheets("Import_Sheet").paste Range("A1")
因为粘贴是工作表的一种方法,而
range(“A1”)
是目标参数。您可能会被绊倒,因为您大量使用选择和在不需要时激活。请看,并。感谢您的提示-所有这些都是新的,因此感谢最后一行的提示-“对象不支持属性或方法”您需要使用PasteSpecial
非常感谢这项工作-很抱歉这些糟糕的做法,但我是vba新手,不断学习。。。再次感谢:)不用担心,这是新手的常见做法,因为录制的代码就是这样显示的。这里的许多答案将试图引导您远离选择和激活方法。上面推荐的读数是一个很好的起点。