Проблема: сбой метода вставки класса Worksheet - PullRequest
0 голосов
/ 15 января 2019

Я работал над частью работы, целью которой является открытие и копирование информации с одного листа и копирование его в другой.Вот скрипт

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")

Любые мысли / отзывы / предлагаемые изменения будут высоко оценены.

1 Ответ

0 голосов
/ 15 января 2019

Не используйте .Activate см. Как избежать использования Select в Excel VBA , техника для Activate такая же.

Вместо этого скопируйте в одном утверждении и укажите, в какой книге 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...