我正在编写VBA代码,但会导致错误,但是当我使用F8手动调试时,它可以解决错误。
错误1004,从分类范围粘贴特殊方法失败
这是代码:
Private Sub CopyStep(wsOutp As Worksheet, ByVal sAdobeFile As String, ByVal sPath As String)
ActiveWorkbook.FollowHyperlink sPath & sAdobeFile
AppActivate "Adobe Acrobat Reader DC"
SendKeys "^a", True
SendKeys "^c", True
If Sheets("Menzis").Range("A1") = "" Then
Sheets("Menzis").Activate
Sheets("Menzis").Range("A1").PasteSpecial
Else
Sheets("Menzis").Activate
Sheets("Menzis").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial
End If
End Sub
当我要粘贴特殊字符时出现错误。 (两者)
答案 0 :(得分:1)
在发送这样的密钥之前和之后添加Application.Wait Now + #0:00:01#
:
Application.Wait Now + #0:00:01#
SendKeys "^a", True
SendKeys "^c", True
Application.Wait Now + #0:00:01#
确保该动作实际上已执行,并且应用程序需要时间来响应它。这就是为什么它可以与 F8 一起使用的原因。
答案 1 :(得分:0)
如果没有数据低于A1 ,则此Sheets("Menzis").Range("A1").End(xlDown)
将导致工作表的最后一行。因此,您不能再.Offset(1, 0)
再排一行,因为您超出了最大行数限制。
要查找列中最后使用的行,最好使用xlUp
方法:
Sheets("Menzis").Cells(Rows.Count, "A").End(xlUp)
然后偏移
Sheets("Menzis").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
Private Sub CopyStep(wsOutp As Worksheet, ByVal sAdobeFile As String, ByVal sPath As String)
ActiveWorkbook.FollowHyperlink sPath & sAdobeFile
AppActivate "Adobe Acrobat Reader DC"
SendKeys "^a", True
SendKeys "^c", True
Sheets("Menzis").Activate 'not necessarily needed to paste
Sheets("Menzis").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial
End Sub
如果仍然引发错误,您需要在粘贴之前添加Application.Wait Now + #0:00:01#
,如Vityata在其评论中指出的那样。