今天我們的場景是工作表的拆分
當然今天的拆分並不是簡單的拆分
拆分之後還需要將對應的資料寫入工作薄,並且將工作簿放到對應的資料夾下
一下子好像有不少的要求,不方,我們先來看看場景
場景模擬
這是我們今天的場景模擬,有一個總表,總表裡面有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”
然後將總表中對應的資料複製到這個工作薄當中就可以了。
整體過程就是這樣,非常的簡單