Как скопировать из основной рабочей книги и вставить данные в несколько рабочих книг - PullRequest
0 голосов
/ 14 февраля 2019

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

Как мне написать код таким образом, чтобы он ссылался на текущую открытую книгу и основную книгу.

Я пытался объявить и сослаться на активную книгу, но она копируети вставляет в мастер

Windows("master.xlsm").Activate
Selection.Copy

Dim WbkCurrent As Workbook
Set WbkCurrent = ActiveWorkbook
WbkCurrent.Activate
Range("A1").Select
ActiveSheet.Paste

Я ожидаю, что данные будут вставлены в любую другую рабочую книгу, открытую вместе с мастер-книгой.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Копировать из основной книги

. При этом будет скопирована текущая выделенная книга с именем cMaster (master.xlsm) в ячейку cRange (A1) всех остальных открытых книг ActiveSheet..

Код

Option Explicit

Sub CopyFromMaster()

    Const cMaster As String = "master.xlsm"   ' Master Workbook
    Const cRange As String = "A1"             ' Paste Cell Range

    Dim wb As Workbook  ' Current Workbook

    ' Loop through all open workbooks.
    For Each wb In Workbooks
        ' Check if the name of the Current Workbook is different than the name
        ' of the Master Workbook.
        If wb.Name <> cMaster Then
            ' Copy the selection in Master Workbook to Paste Cell Range
            ' in ActiveSheet of Current Workbook.
            Windows(cMaster).Selection.Copy wb.ActiveSheet.Range(cRange)
        End If
    Next

End Sub

РЕДАКТИРОВАТЬ

Вопрос в комментариях

"Как мне повторить ту же инструкцию?а теперь скопировать с листа 2 основной рабочей книги и вставить на листе 2 другой открытой рабочей книги? "

Sub CopyFromMaster2()

    Const cMaster As String = "master.xlsm"   ' Master Workbook
    Const cRange As String = "A1"             ' Paste Cell Range

    Dim wb As Workbook  ' Current Workbook

    For Each wb In Workbooks
        ' Check if the name of the Current Workbook is different than the name
        ' of the Master Workbook.
        If wb.Name <> cMaster Then
            ' Before using selection (select) you have to make sure that
            ' the worksheet is active or just activate it.
            Workbooks(cMaster).Worksheets("Sheet2").Activate
            ' Copy the selection in "Sheet2" of Master Workbook to
            ' Paste Cell Range "Sheet2" of Current Workbook.
            Selection.Copy wb.Worksheets("Sheet2").Range(cRange)
        End If
    Next

End Sub
0 голосов
/ 14 февраля 2019
Windows("master.xlsm").Activate
Selection.Copy

Dim WbkCurrent As Workbook
Set WbkCurrent = ActiveWorkbook
Dim wb As Workbook

For Each wb In Application.Workbooks
  If wb.Name <> WbkCurrent.Name Then
      'For the codeline below: assuming that you want to paste your selection to the first sheet for each wb. 
      'Else, change worksheets number to the sheet you want to copy to or change 
      'Worksheets(1)' into 'Activesheet' to copy on the currently active sheet for each wb.
      wb.Worksheets(1).Range("A1").PasteSpecial (xlPasteAll)

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