Копировать рабочий лист из другой рабочей книги по циклу - PullRequest
0 голосов
/ 21 марта 2019
For Each ws In punchcalc.Worksheets
    ws.Range("D11:L33").Copy
    reportfile.Activate
    reportfile.Sheets(Index).Range("D11").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Index = Index + 1
    Next ws
End Sub

этот код работает только одну секунду цикла, получая ошибку

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Никогда не используйте выберите

    For Each ws In punchcalc.Worksheets
      ws.Range("D11:L33").Copy
      reportfile.Sheets(Index).Range("D11").PasteSpecial Paste:=xlPasteValues
      Index = Index + 1
    Next ws
0 голосов
/ 21 марта 2019

В приведенном ниже коде приведены некоторые рекомендации о том, как вы можете действовать.Поэтому измените код и попробуйте:

Option Explicit

Sub test()

    Dim wbSource As Workbook, wbDestination As Workbook
    Dim ws As Worksheet
    Dim Lastrow As Long

    'Let us assume that you run the code from another workbook (NOT wbSource or wbDestination) & both workbooks are closed. At the end of the code you can close the workbooks if you want to.
    Set wbSource = Workbooks.Open("C:\xx\xx\xx\xx\Source") 'Open wbSource
    Set wbDestination = Workbooks.Open("C:\x\xx\xx\xx\Destination") 'Open wbDestination

    For Each ws In wbSource.Worksheets 'Loop wbSource Sheet1

        With wbDestination.Worksheets("Sheet1")
            Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row 'Find wbDestination, Sheet1 Last row
        End With

        ws.Range("A1").Copy wbDestination.Worksheets("Sheet1").Range("A" & Lastrow + 1) 'Paste wbSource.ws.Range("A1").value to wbDestination.Sheet1.Range("A" & Lastrow + 1)

    Next ws

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...