Excel VBA 每日一场景 将总表拆分填入对应的文件夹中
今天我们的场景是工作表的拆分 当然今天的拆分并不是简单的拆分 拆分之后还需要将对应的数据写入工作薄,并且将工作簿放到对应的文件夹下 一下子好像有不少的要求,不方,我们先来看看场景
场景模拟
这是我们今天的场景模拟,有一个总表,总表里面有N个工作表
我们现在需要根据工作表的名称,来进行数据的拆分,拆分之后呢,需要将新拆分的工作表放到指定的文件夹中 听起来,是不是觉得挺复杂,又要拆分,又要新建,最头疼的还要将新建的工作薄放入指定的文件夹。
不急,我们慢慢的分析 工作表的拆分,非常的简单,遍历所有的工作表之后,就可以拆分新建了。
然后就是工作表的移动,这里我们不去做移动,因为可能要用到FSO
这个代码会比较的多 我们换个角度出发,我们现在指定的文件夹创建一个新的工作薄,然后将对应的数据填入这个工作薄
之后就可以保存了,那么这个新建的工作薄就实现了在指定的位置了,这样似乎要简单一些。
来看代码
代码区
Sub test()
Dim f, sht As Worksheet
f = ThisWorkbook.Path & "\拆分文件夹\"
For Each sht In Worksheets
If Dir(f & sht.Name) = "" Then
MkDir f & sht.Name
End If
With Workbooks.Add
.SaveAs f & sht.Name & "\" & sht.Name & ".xlsx"
sht.Copy .Sheets(1)
.Close True
End With
Next
End Sub
非常的简单,代码并不长,用VBA写代码,最重要的还是思路。
我们来验证下效果
从GIF中可以看出来,开始的时候,文件夹中是没有任何的文件夹,但是经过VBA的这一番操作之后,文件夹内不仅仅是创建了新的文件夹,同时也是将对应的文件夹的名称的工作表的内容也写入了,也算是成功的实现了我们的要求了。
代码解析
今天的代码其实很简单的,我们来看看
我们前面说了,想要在指定的文件夹中创建文件夹,那么先要找到指定的文件夹,如何找呢?
path代表的就是这个工作薄所在的路径
注意,这里的路径仅仅是精确到上一级的路径,后面我们还需要继续构造的
后面的拆分文件夹这几个字是我们在上面的代码中自己添加的,实际上path,仅仅取值到
留意这一点,很多小伙伴在使用这个方法的时候, 都是卡在这个路径的构造上面,大家要学会这种方法。
有了指定的路径,即指定的文件夹之后,我们就可以创建文件夹了,那么如何创建呢?
用DIR方法,创建文件夹也要有名称的,我们的名称是根据工作表的名称来决定的
那么这里我们先要去循环遍历所有的工作表,然后用工作表的名称来创建文件夹
If Dir(f & sht.Name) = "" Then
MkDir f & sht.Name
End If
有了这个新建的文件夹之后呢,我们就可以在这个文件夹内,创建一个新的工作薄
工作薄的创建,直接用
workbook.add
然后将它顺带进行重命名。
如何重命名 就是利用另存为的方法 workbook.SAVES
另存的同时,我们是不是可以指定路径呢?
这里我们直接用代码搞定
.SaveAs f & sht.Name & "" & sht.Name & ".xlsx"
然后将总表中对应的数据复制到这个工作薄当中就可以了。整体过程就是这样, 非常的简单