使用VBA将一个excel文件拆分成多个表格

最近正好帮别人做了这个,然后社长催博客于是便有了这篇文章。

首先先来看下效果

源文件

拆分后

一.准备

  1. 在你的excel中:文件->选项->自定义功能区 中,将开发工具勾上。
  2. 打开你要分割的表格,将其另存为“Excel启用宏的工作簿(.xlsm)”

二.代码

在开发工具栏里点击Visual Basic,右键模块->插入->模块。

代码就是下面这一段了,将它粘贴进模块后,根据自己的需要进行修改。

Sub cutup()
    Dim i As Integer     '定义所需的变量
    Dim path As String
    Dim filename As String
    Dim roomnumber As String
    Dim month As String
    With Application.FileDialog(msoFileDialogFolderPicker)  '选择分割后的文件存储路径
        If .Show = False Then Exit Sub
            path = .SelectedItems(1)
    End With
    filename = Cells(1, 1)    '将名称设为A1位置的数据
    month = Cells(2, 1)       '将月份设为A2位置的数据
    Application.ScreenUpdating = False
    For i = 4 To Cells(1, 1).End(xlDown).Row Step 1     '从第4行开始循环到表格底部(前三行是表头)
        roomnumber = Cells(i, 1)
        Range("A1:H3,A" & i & ":H" & i).Select     '每次均选择表头(A1到H3)和本次循环内的行(A i到H i)
        Selection.Copy  '复制所选择的内容
        Workbooks.Add   '新建一个工作簿
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False     '将数值粘贴到新的工作簿里面
        ActiveWorkbook.SaveAs filename:=path & "\" & filename & month & roomnumber & ".xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False   '将文件按名称-月份-房号保存到之前指定的位置
        ActiveWindow.Close     '关闭这个工作簿
    Next i
    MsgBox "分割完毕!", vbDefaultButton1, "提示"
    Application.ScreenUpdating = True
End Sub

记得按Ctrl+S保存

三.按钮

返回你的表格,在开发工具栏点击插入->按钮(窗体控件)->点击表格内一个你喜欢的地方把按钮放上->指定刚才所编写的宏(cutup)

如果你已经学会了,不妨下载这个表格测试看看效果吧!

最后修改日期: 2020年4月13日

作者

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论