由Skill成长学院原创出品

作者:解题宝宝


多个XWPFTemplate合并 多个sheet合并成一页代码_VBA

 Excel  ·  基础必备  ·  高效率  ·  懒癌必备 


又到了久违的VBA教学时间!

今天,解题宝宝无聊闲逛,惊奇发现了两份VBA代码,特意分享给大家。

是解决如何合并大量不同的工作表哒。

多少张都没问题!亲测有效!

分为以下两种情况☟

合并同一工作簿的不同工作表。


效果长这样:

本来,同一工作簿下,一个排班表是一张sheet;

多个XWPFTemplate合并 多个sheet合并成一页代码_bc_02

接下里,就变成:所有排班表汇总成一张sheet,格式还自动排好!

◎ 效果演示

多个XWPFTemplate合并 多个sheet合并成一页代码_所有sheet合并成一页_03

厉害叭?

代码立即备上,宝宝们直接复制粘贴就好,操作无敌容易!

Step 1

  • 新建一个Sheet,鼠标右键选择  查看代码  。这时你打开了VBA界面。

◎ 操作演示

多个XWPFTemplate合并 多个sheet合并成一页代码_bc_04

Step 2

  • 复制以下代码,粘贴进  模板  编辑框。

Sub 合并当前工作簿下的所有工作表()

Application.ScreenUpdating = False
For j = 1 To Sheets.Count
   If Sheets(j).Name <> ActiveSheet.Name Then
       X = Range("A65536").End(xlUp).Row + 1
       Sheets(j).UsedRange.Copy Cells(X, 1)
   End If
Next
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "解题宝宝,我成功啦", vbInformation, "提示"
End Sub

◎ 复制进去后的样子

多个XWPFTemplate合并 多个sheet合并成一页代码_多个XWPFTemplate合并_05

Step 3

  • 按  F5  调试,见证奇迹发生的时刻叭!

◎ 操作演示

多个XWPFTemplate合并 多个sheet合并成一页代码_VBA_06

合并不同工作簿的不同工作表。


首先,你的所有工作簿,要放在同一个储存位置,同一个文件夹,

那下面介绍的操作才会生效哦。

比如解题宝宝的这三个工作簿,都在「考勤记录」文件夹。

多个XWPFTemplate合并 多个sheet合并成一页代码_VBA_07

这情况下,当我们想打开三份考勤记录,就不得不打开三个文件。

多个XWPFTemplate合并 多个sheet合并成一页代码_多个XWPFTemplate合并_08

然而,经过解题宝宝的代码,你完全可以实现:三个考勤时间表归总到一个工作簿!

以前总是打开一大堆Excel文件,把电脑卡死?

以后再也不会存在呐!打开一个文件,就能查看所有工作簿。

◎ 效果演示

多个XWPFTemplate合并 多个sheet合并成一页代码_VBA_09

Step 1

  • 在同一文件夹里,新建一个  XLSL工作表 ,命名后打开它。

◎ 操作演示

多个XWPFTemplate合并 多个sheet合并成一页代码_VBA_10

Step 2

  • 点击Sheet1,像刚刚一样打开VBA界面,复制以下代码:
Private Sub hb()
    Dim hb As Object, kOne As Boolean, tabcolor As Long
    Set hb = Workbooks.Add
    Application.DisplayAlerts = False
    For i = hb.Sheets.Count To 2 Step -1
        hb.Sheets(i).Delete
    Next
    Dim FileName As String, FilePath As String
    Dim iFolder As Object, rwk As Object, Sh As Object
    Set iFolder = CreateObject("shell.application").BrowseForFolder(0, "请选择要合并的文件夹", 0, "")
    If iFolder Is Nothing Then Exit Sub
    FilePath = iFolder.Items.Item.Path
    FilePath = IIf(Right(FilePath, 1) = "\", FilePath, FilePath & "\")
    FileName = Dir(FilePath & "*.xls*")
    Do Until Len(FileName) = 0
        If UCase(FilePath & FileName) <> UCase(ThisWorkbook.Path & "\" & ) Then
            Set rwk = Workbooks.Open(FileName:=FilePath & FileName)
            tabcolor = Int(Rnd * 56) + 1
            With rwk
                For Each Sh In .Worksheets
                    Sh.Copy After:=hb.Sheets(hb.Sheets.Count)
                    hb.Sheets(hb.Sheets.Count).Name = FileName & "-" & 
                    hb.Sheets(hb.Sheets.Count).Tab.ColorIndex = tabcolor
                    If Not kOne Then hb.Sheets(1).Delete: kOne = True
                Next
                .Close True
             End With
        End If
        Set rwk = Nothing
        FileName = Dir
    Loop
    Application.DisplayAlerts = True
End Sub

◎ 复制进去后的样子

多个XWPFTemplate合并 多个sheet合并成一页代码_所有sheet合并成一页_11

  • 按  F5  调试,选择你工作簿们所在的目录。

如果出现「包含外部链接」的提示,选择  更新 。

◎ 操作演示

多个XWPFTemplate合并 多个sheet合并成一页代码_VBA_12

大功告成!

你已经把同一文件夹目录的所有工作簿,

都引入了进来,统统变成工作表呐,随意切换查看呐。

◎ 效果演示

多个XWPFTemplate合并 多个sheet合并成一页代码_VBA_09

练手时间


因为今天教学的是VBA执行代码,

所以只给素材给大家,只要代码运行成功,就代表你的操作成功呐。

作业包里有两个Excel文件,一份排班表,一份考勤表。