今天我們的場景是工作表的拆分 當(dāng)然今天的拆分并不是簡單的拆分 拆分之后還需要將對應(yīng)的數(shù)據(jù)寫入工作薄,并且將工作簿放到對應(yīng)的文件夾下 一下子好像有不少的要求,不方,我們先來看看場景
場景模擬
這是我們今天的場景模擬,有一個總表,總表里面有N個工作表
我們現(xiàn)在需要根據(jù)工作表的名稱,來進(jìn)行數(shù)據(jù)的拆分,拆分之后呢,需要將新拆分的工作表放到指定的文件夾中 聽起來,是不是覺得挺復(fù)雜,又要拆分,又要新建,最頭疼的還要將新建的工作薄放入指定的文件夾。
不急,我們慢慢的分析 工作表的拆分,非常的簡單,遍歷所有的工作表之后,就可以拆分新建了。
然后就是工作表的移動,這里我們不去做移動,因?yàn)榭赡芤玫紽SO
這個代碼會比較的多 我們換個角度出發(fā),我們現(xiàn)在指定的文件夾創(chuàng)建一個新的工作薄,然后將對應(yīng)的數(shù)據(jù)填入這個工作薄
之后就可以保存了,那么這個新建的工作薄就實(shí)現(xiàn)了在指定的位置了,這樣似乎要簡單一些。
來看代碼
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寫代碼,最重要的還是思路。
我們來驗(yàn)證下效果
從GIF中可以看出來,開始的時候,文件夾中是沒有任何的文件夾,但是經(jīng)過VBA的這一番操作之后,文件夾內(nèi)不僅僅是創(chuàng)建了新的文件夾,同時也是將對應(yīng)的文件夾的名稱的工作表的內(nèi)容也寫入了,也算是成功的實(shí)現(xiàn)了我們的要求了。
今天的代碼其實(shí)很簡單的,我們來看看
我們前面說了,想要在指定的文件夾中創(chuàng)建文件夾,那么先要找到指定的文件夾,如何找呢?
path代表的就是這個工作薄所在的路徑
注意,這里的路徑僅僅是精確到上一級的路徑,后面我們還需要繼續(xù)構(gòu)造的
后面的拆分文件夾這幾個字是我們在上面的代碼中自己添加的,實(shí)際上path,僅僅取值到
留意這一點(diǎn),很多小伙伴在使用這個方法的時候, 都是卡在這個路徑的構(gòu)造上面,大家要學(xué)會這種方法。
有了指定的路徑,即指定的文件夾之后,我們就可以創(chuàng)建文件夾了,那么如何創(chuàng)建呢?
用DIR方法,創(chuàng)建文件夾也要有名稱的,我們的名稱是根據(jù)工作表的名稱來決定的
那么這里我們先要去循環(huán)遍歷所有的工作表,然后用工作表的名稱來創(chuàng)建文件夾
If Dir(f & sht.Name) = "" Then
MkDir f & sht.Name
End If
有了這個新建的文件夾之后呢,我們就可以在這個文件夾內(nèi),創(chuàng)建一個新的工作薄
工作薄的創(chuàng)建,直接用
workbook.add
然后將它順帶進(jìn)行重命名。
如何重命名 就是利用另存為的方法 workbook.SAVES
另存的同時,我們是不是可以指定路徑呢?
這里我們直接用代碼搞定
.SaveAs f & sht.Name & "" & sht.Name & ".xlsx"
然后將總表中對應(yīng)的數(shù)據(jù)復(fù)制到這個工作薄當(dāng)中就可以了。整體過程就是這樣, 非常的簡單