首页 > 解决方案 > 如何将数据从多个工作表的一个 Excel 文件复制到另一个多个工作表的 Excel 文件

问题描述

我有一个包含列名和值以及工作表名的多张工作表的 excel 文件。
我有另一个包含列名和工作表名称的多张工作表的 excel 文件。
我想将数据(列值)从一个 excel 复制到另一个 excel 而不更改工作表名,因为工作表名不同,但列名相同。
很高兴听到一些建议。

标签: pythonexcel

解决方案


我的建议是在单独的模块中定义函数,但为了简单起见,我在主模块(激活工作簿和工作表)中定义了 2 个函数。宏位于单独的 excel 文件 (Macro.xlsm) 上。同一位置包含两个 Excel 文件(Book1.xlsx 和 Book2.xlsx)。

在此处输入图像描述

我试图用这个例子来回答一般性的问题,所以它可以扩展到许多工作簿和工作表。

在此处输入图像描述

Book2.xlsx 在运行宏之前。

在此处输入图像描述

运行宏后的 Book2.xlsx。目标行被故意选择低一排:-)

在此处输入图像描述

Option Explicit

Dim wb01 As Workbook, wb02 As Workbook
Public paTh01 As Variant, paTh02 As Variant


'/Define your functions
'Function1 openBook(paTh0, wB0)
Function openBook(path0 As Variant, wB0 As Workbook)
        Set wB0 = Workbooks.Open(path0)
        wB0.Activate
End Function

'Function2 openSheet(wB0, "Sheet_Name")
Function openSheet(wB0 As Workbook, sheetName0 As String)
        wB0.Activate
        Sheets(sheetName0).Activate
End Function

'Main Module
Sub main()

    paTh01 = "D:\Book1.xlsx"
    paTh02 = "D:\Book2.xlsx"

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With

    Call openBook(paTh01, wb01)
    Call openSheet(wb01, "mySheet1")
    Range("A2:D4").Select
    With Selection
        .Orientation = 0
        .Copy
    End With

    'If you have a loop, you should put delay otherwise excel will crash
    Application.Wait (Now + TimeValue("0:00:01"))

    Call openBook(paTh02, wb02)
    Call openSheet(wb02, "mySheet2")
    Range("A3:D5").PasteSpecial xlPasteValues, Transpose:=False


    wb01.Close savechanges:=False
    DoEvents

    wb02.Close savechanges:=True
    DoEvents

End Sub

推荐阅读