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
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! :)