【问题标题】:Issue: Paste method of Worksheet class failed问题:Worksheet 类的粘贴方法失败
【发布时间】:2019-01-15 18:20:57
【问题描述】:

我一直在从事一项旨在从一个工作表打开和复制信息并将其复制到另一个工作表的工作。这是脚本

Sub Data_API()        
    Dim xlApp, xlBook        
    Dim xlBook2 As Workbook

    Set xlApp = CreateObject("Excel.Application")        
    Set xlBook = xlApp.Workbooks.Open("C:\Users\Pear\Book2.xlsm")        
    Set xlBook2 = Workbooks("Extract.xlsb")

    xlApp.Visible = True        
    xlApp.Run "ImportFile"

    xlBook.Worksheets("Sheet1").Range("A2:K500").Copy        
    xlBook2.Activate

    ActiveSheet.Paste Destination:=Worksheets("Data").Range("A2")

    xlBook.Application.CutCopyMode = False   
    xlBook.Close False

    Application.DisplayAlerts = False
End Sub

我收到如下错误消息:

运行时错误 1004:工作表类的粘贴方法失败。

当我选择调试时,它会将我引导到这行代码

ActiveSheet.Paste Destination:=Worksheets("Data").Range("A2")

任何想法/反馈/建议的更改将不胜感激。

【问题讨论】:

  • Paste method of worksheet class failed 的可能重复项。此外,您的代码是 VBA,而不是 VBScript。
  • @A Lim 请澄清此代码是 VBSrcipt 还是 VBA,因为您的 Q 最初被标记为两者。无论哪种方式都有(可解决的)问题
  • @chrisneilsen 代码显然是 VBA,并且也是这样运行的,否则他们会看到语法错误而不是运行时错误。

标签: excel vba


【解决方案1】:

不要使用.Activate 请参阅How to avoid using Select in Excel VBAActivate 的技术是相同的。

而是在一个语句中复制,并指定Worksheets("Data") 在哪个工作簿中:

xlBook.Worksheets("Sheet1").Range("A2:K500").Copy Destination:=xlBook2.Worksheets("Data").Range("A2")

您也不需要打开另一个 Excel 实例。请尝试以下操作:

Sub Data_API()        
    Dim wbSrc As Workbook        
    Set wbSrc = Workbooks.Open("C:\Users\Pear\Book2.xlsm")        

    Dim wbDest As Workbook
    Set wbDest = Workbooks("Extract.xlsb") 'assumes Extract.xlsb is already open

    Application.Run "ImportFile"

    wbSrc.Worksheets("Sheet1").Range("A2:K500").Copy Destination:=wbDest.Worksheets("Data").Range("A2")

    Application.CutCopyMode = False   
    wbSrc.Close False

    'Application.DisplayAlerts = False 'why this here?
End Sub

【讨论】:

  • 您好 Peh,感谢您的帮助。我已经实施了您的建议,但收到以下错误消息:“运行时错误 1004:范围类的复制方法失败”有什么想法吗?
  • 能否请您先确认您使用的是vba 还是vbscript
  • 对我的不理解表示歉意。我相信我正在使用 VBA
  • @A.Lim 请尝试我编辑的答案中的代码。还要确保在您尝试粘贴的区域中没有合并单元格。
  • @A.Lim:如果您在 Excel 中使用编辑器来编写代码,那么您使用的是 VBA。如果不是,很可能是您正在使用 vbscript
猜你喜欢
  • 2013-08-16
  • 2021-01-18
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 2014-09-08
相关资源
最近更新 更多