Excel 多工作表合并为一个工作表切分工作簿显示 - VBA

在日常工作中,会出现这种工作场景。我们拥有多个 Excel 工作表,但是为了便于管理,我们需要将部分将一些工作表合并为一个。以便分发或留存。

这个时候 VBA 依然可以帮我们实现这个功能。

例如,我们有如下 Excel 工作表

  1. 北京销售数据.xlsx
  2. 北京售后数据.xlsx
  3. 北京维修数据.xlsx
    我们需要将这些工作表合并为一个 Excel 工作表,并且放在不同的工作簿。如下图

方法如下:

  1. 新建一个 Excel 工作表,右键单击数据所在页的 sheet1 标签。选择’查看代码’。(或者按快捷键 ALT + F11)
  2. 复制下面的代码到新打开的窗口中。(需要注意代码中的注释。如果您合并的是 Excel 工作表为Excel97-2003的文件,需要自行修改VBA.Replace(tempwb.Name, “.xlsx”, “”)为VBA.Replace(tempwb.Name, “.xls”, “”))
  3. 点击复制完代码的页面工具栏中的‘运行->运行子过程/用户窗体’。(或点击快捷键F5)
  4. 在弹出的窗口中选择您要合并的 Excel 工作表,并点击确认。
  5. 程序会新建一个 Excel 工作表,并完成合并。
  6. 另存您新生成的文件。
     

    ‘来自Geeker Xu加工整理’

    ‘功能:把多个excel工作簿的第一个sheet工作表合并到一个excel工作簿的多个sheet工作表,新工作表的名称等于原工作簿的名称’

    Sub Books2Sheets()

    ‘定义对话框变量

    Dim fd As FileDialog

    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    ‘新建一个工作簿

    Dim newwb As Workbook

    Set newwb = Workbooks.Add

    With fd

    If .Show = -1 Then

    ‘定义单个文件变量

    Dim vrtSelectedItem As Variant

    ‘定义循环变量

    Dim i As Integer

    i = 1

    ‘开始文件检索

    For Each vrtSelectedItem In .SelectedItems

    ‘打开被合并工作簿

    Dim tempwb As Workbook

    Set tempwb = Workbooks.Open(vrtSelectedItem)

    ‘复制工作表

    tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)

    ‘把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xlsx文件,即Excel2007的文件,如果是Excel97-2003的文件,需要改成xls

    newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, “.xlsx”, “”)

    ‘关闭被合并工作簿

    tempwb.Close SaveChanges:=False

    i = i + 1

    Next vrtSelectedItem

    End If

    End With

    Set fd = Nothing

    End Sub
    希望 Geeker Xu 的分享可以对您的工作带来方便。

Geeker Xu wechat
欢迎您扫一扫上面的微信公众号,订阅我的公众号
坚持原创技术分享,您的支持将鼓励我继续创作!