2017-07-10 9 views
1

Ich möchte die Daten (Formeln) von einem Blatt des Buches in ein anderes, dann auch in andere Bücher und deren Blätter kopieren. Gibt einen Fehler (Laufzeitfehler 1004). Und wo eingefügt, fügt nur Werte (ohne Formeln) ein. Fehler in Zeile: Selection.PasteSpecial Paste: = xlPasteAllPasteSpecial (Laufzeitfehler 1004)

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 

Antwort

3

Obwohl es die Hälfte des Codes in Kyrillisch ist (btw, ich liebe Kyrillisch) und ich kann es nicht replizieren, ich denke, dass Ihr Fehler in der zweiten ist Selection.PasteSpecial Paste:=xlPasteAll.

So ändern:

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

Insgesamt haben Sie 4 mal Range("" + A + "") und Sie sollten es überall ändern. Im Allgemeinen sollte die Verwendung von Select und Activate in VBA vermieden werden.

Viel Spaß! :)

+0

Außerdem habe ich nicht erwartet, dass Sie sich über * Kyrillisch * beschweren. Ich war zuerst überrascht: P –

+0

@ASH Ich habe mich nicht beschweren, aber auf dieser Maschine, wenn ich es kopiere, bekomme ich die '???' also Es ist schwierig :) – Vityata

Verwandte Themen