首页 > 解决方案 > 在数据工作簿和绘图工作簿之间复制粘贴的宏

问题描述

我对在 excel VBA 中编码宏还很陌生,我需要一些帮助。我正在使用 2 个不同的工作簿。一种在多张纸上具有数据集,另一种具有与这些数据集相对应的图。我正在寻找一个允许我从数据工作簿中的活动工作表中复制列 DI 并将其粘贴到绘图工作簿中的活动工作表中的宏。我想要实现的棘手部分是我希望根据相应的日期列(绘图工作簿中的 a 列和数据工作簿中的 b 列)将数据粘贴到绘图工作簿。

两本工作簿的原因是图表是一个模板,这是我能够想出的最简单的方法,以使所有图表看起来完全一样,除了各种数据。我有超过一百个这样的地块可以做任何可以加快传输过程的事情,我们将不胜感激。

标签: excelvbacopy-paste

解决方案


这应该有效。注意:确保您只在 1 个 Excel 实例中打开每个工作簿。EX:打开 Dataworkbook.xls 从文件菜单打开下一个工作簿 从文件菜单打开下一个工作簿等。

以下是代码:

    Option Explicit

    'NOTE: This should be called from your main data Workbook
    Sub RunIT()

      '                             'Sheet that data is on
      '                                              'Range matrix to copy
      '                                                        'Workbook
      '                                                                     'Range to copy to
      DataPaste ThisWorkbook.Sheets("Sheet1").Range("C1:E10"), "Book1.xls", "E1"
      DataPaste ThisWorkbook.Sheets("Sheet1").Range("C1:E10"), "Book2.xls", "E1"

    End Sub

    Sub DataPaste(rngFrom As Range, strToWorkbook As String, strToRange As String)
        Dim shtSheet As Worksheet
        Dim wndw As Window
        Dim wbTo As Workbook
        Dim wbItem As Workbook

        'Initialize copy event
        rngFrom.Copy

        strToWorkbook = LCase(Trim(strToWorkbook))
        'loop through each workbook that is open in this instance of Excel
        For Each wbItem In Application.Workbooks
            'If Names match then, copy data
            If LCase(Trim(wbItem.Name)) = strToWorkbook Then
                'This loops through all sheets in specified workbook(CopyTo).
                For Each shtSheet In wbItem.Worksheets
                    'Paste it
                    shtSheet.Paste shtSheet.Range(strToRange)
                Next
            End If
        Next

    End Sub

推荐阅读