【问题标题】:How to copy from master workbook and paste data on multiple workbooks如何从主工作簿复制并将数据粘贴到多个工作簿上
【发布时间】:2019-02-14 09:03:59
【问题描述】:

我录制了一个宏以从主工作簿复制并粘贴到另一个工作簿(我们称之为 wbk1),但是我不能将它用于我需要格式化的所有其他工作簿,因为宏中的代码专门引用 wbk1。

如何编写代码以引用当前打开的工作簿和主工作簿。

我试图声明和引用活动工作簿,但它复制并粘贴在主工作簿上

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

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

我希望将数据粘贴到与主工作簿一起打开的任何其他工作簿上。

【问题讨论】:

    标签: excel vba


    【解决方案1】:
    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
    

    【讨论】:

    • 嗨,Ecof,谢谢您的回复,我将如何重复相同的指令,但现在从主工作簿的表 2 复制并粘贴到另一个打开的工作簿的表 2
    • 嗨 C_Live,假设您仍然在第二张表(来自主工作簿)上手动选择了一个选择,您只需将 wb.Worksheets(1).Range("A1").PasteSpecial (xlPasteAll) 更改为 wb.Worksheets(2).Range("A1").PasteSpecial (xlPasteAll)
    • 您也可以将Selection.copy 更改为Activeworkbook.Worksheets(x).Range("A1:ZZ100").copy(将工作表(x)更改为您要从中复制的主工作表,并将 Range("A1:ZZ100") 更改为您想要的范围'想复制)
    【解决方案2】:

    从主簿复制

    这会将名为cMaster (master.xlsm) 的工作簿的当前选择复制到所有其他打开的工作簿ActiveSheet 的单元格cRange (A1)。

    代码

    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
    

    【讨论】:

    • 嗨 VBasic2008 感谢您的回复,我将如何重复相同的指令,但现在从主工作簿的第 2 表复制并粘贴到其他打开的工作簿的第 2 表
    • @C_Live:我已经编辑了我的答案,在 cmets 中添加了另一个版本来引用您的问题。
    • Selection.Copy wb.Worksheets("Sheet2").Range(cRange) 行没有打开工作簿 wb
    • @C_Live:当然不是。 wb 是“未知的”。在 For Each wb In Workbooks 行中,Workbooks 实际上表示所有 打开 工作簿。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多