Search code examples
vbaexcelfor-loopcopy-paste

PasteSpecial (Run-time error 1004)


I want to copy the data (formulas) from one sheet of the book to another , then also in other books and their sheets . Gives an error (Run-time error 1004). And where inserted , inserts only values(without formulas) . Error in line : Selection.PasteSpecial Paste:=xlPasteAll

    Sub Скопирователь()
    Call Скопирователь1
    Call Скопирователь2
    End Sub


    Sub Скопирователь1()
    Dim book1 As Workbook
    Dim book2 As Workbook
    Dim A As String
    Dim n As Long
    Dim B()
    A = "P34:P99"
    Set book2 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 6\Пишем условие vba\4-ое место\6.xlsm")
    book2.Worksheets("6").Activate
    Range("" + A + "").Copy

    B = Array("7", "8", "16", "17", "21", "22", "23", "25", "26", "29", "30", "31", "54", "55", "56", "57", "58", "59")

    'условия
    For n = 0 To 17

    Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 6\Пишем условие vba\4-ое место\" & B(n) & ".xlsm")
    book1.Worksheets("" & B(n) & "").Activate
    Range("" + A + "").Select
    Selection.PasteSpecial Paste:=xlPasteAll
    'все листы
    'Листы
    book1.Save
    book1.Close
    Next n

   End Sub

   Sub Скопирователь2()
   Dim book1 As Workbook
   Dim book2 As Workbook
   Dim A As String
   Dim n, t As Long
   Dim B()
   Dim M()
   A = "P34:P99"
   B = Array("6", "7", "8", "16", "17", "21", "22", "23", "25", "26", "29", "30", "31", "54", "55", "56", "57", "58", "59")
   M = Array("Лист1", "Лист2", "Лист3", "Лист4", "Лист5", "Лист6", "Лист7", "Лист8", "Лист9", "Лист10", "Лист11", "Лист12", "Лист13", "Лист14", "Лист15", "Лист16", "Лист17", "Лист18", "Лист19")
   'условия
   For n = 0 To 18

   Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 6\Пишем условие vba\4-ое место\" & B(n) & ".xlsm")


   book1.Worksheets("" & B(n) & "").Activate
   Range("" + A + "").Copy
   'все листы
   'Листы
    For t = 0 To 18
       book1.Worksheets("" & M(t) & "").Activate
           Range("" + A + "").Select
           Selection.PasteSpecial Paste:=xlPasteAll
    Next t
    book1.Save
    book1.Close
    Next n

    End Sub

Solution

  • Although it is half of the code in Cyrillic (btw, I love Cyrillic) and I cannot replicate it, I guess that your error is in the second Selection.PasteSpecial Paste:=xlPasteAll.

    Thus, change:

    Range("" + A + "").Select To: Range("A:A").Select

    Altogether you have 4 times Range("" + A + "") and you should change it everywhere. In general, using Select and Activate should be avoided in VBA.

    Have fun! :)