選單

Excel VBA 每日一場景4 將總表拆分填入對應的資料夾中

今天我們的場景是工作表的拆分

當然今天的拆分並不是簡單的拆分

拆分之後還需要將對應的資料寫入工作薄,並且將工作簿放到對應的資料夾下

一下子好像有不少的要求,不方,我們先來看看場景

場景模擬

這是我們今天的場景模擬,有一個總表,總表裡面有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”

然後將總表中對應的資料複製到這個工作薄當中就可以了。

整體過程就是這樣,非常的簡單