【问题标题】:Macro Excel Consolidate Many Workbooks with Same Worksheet Name宏 Excel 合并多个具有相同工作表名称的工作簿
【发布时间】:2017-06-20 07:20:59
【问题描述】:

我有场景:Workbook1、Workbook2、Workbook3 和 Workbook4。这些工作簿中的每一个都有一个工作表名称 wsheet_a。我将我的宏放在名为 master_file 的主工作簿中,并且我想将每个工作簿中的 wsheet_a 工作表合并到 master_file 工作簿中的 mf_wsheet 从特定行(例如第 2 行)开始。一旦我重新运行宏,它就会替换 mf_wsheet 中的现有数据。非常感谢任何帮助。

【问题讨论】:

  • 你写过代码吗?您将首先要遍历所有工作簿以查找工作表。就像是。 Dim wb As Workbook, ws As Worksheet For Each wb in Application.Workbooks For Each ws in wb.Worksheets If ws.name = "wsheet_a" Then 'do what you need to do End If Next ws Next wb

标签: vba excel


【解决方案1】:

试试这个...(您需要使用工作簿的路径更新宏)

Option Explicit

Sub Compile_Workbook_Data()

    Dim master_wkbk As Workbook: Set master_wkbk = ThisWorkbook
    Dim master_sht As Worksheet: Set master_sht = ThisWorkbook.Worksheets("mf_wsheet")
    Dim current_wkbk As Workbook
    Dim current_sht As Worksheet
    Dim wkbk_list(1 To 4) As String
    Dim x As Integer
    Dim last_row As Integer
    Dim last_col As Integer

    wkbk_list(1) = "Workbook1.xlsx"
    wkbk_list(2) = "Workbook2.xlsx"
    wkbk_list(3) = "Workbook3.xlsx"
    wkbk_list(4) = "Workbook4.xlsx"

    For x = 1 To UBound(wkbk_list)

        Set current_wkbk = Workbooks.Open("Full Path to File" & wkbk_list(x))
        Set current_sht = current_wkbk.Worksheets("wsheet_a")

        last_row = current_sht.Cells.Find("*", searchorder:=xlByRows, SearchDirection:=xlPrevious).Row
        last_col = current_sht.Cells.Find("*", searchorder:=xlByColumns, SearchDirection:=xlPrevious).Column

        current_sht.Range(Cells(1, 1), Cells(last_row, last_col)).Copy

        last_row = master_sht.Cells.Find("*", searchorder:=xlByRows, SearchDirection:=xlPrevious).Row
        master_sht.Range("A" & last_row + 1).PasteSpecial Paste:=xlPasteValues

        current_wkbk.Close False

    Next x

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-05
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    相关资源
    最近更新 更多