除非注明,文章均為 戰(zhàn)戰(zhàn)如瘋 原創(chuàng),轉(zhuǎn)載請(qǐng)保留鏈接: http://www.zhanzhanrufeng.com/cat4/99.html,VBA交流群273624828。
今天我們來講另一個(gè)案例。假設(shè)你手上有一個(gè)工作簿,里面包含了N多的工作表,現(xiàn)在由于工作需要你要將這些工作表都拆分為單獨(dú)的工作簿來向不同的部門下發(fā),那這個(gè)用VBA應(yīng)該怎么實(shí)現(xiàn)呢?假設(shè)我有示例文件所示的這樣一個(gè)工作簿,里面有9個(gè)工作表,我需要將這9個(gè)工作表保存為9個(gè)單獨(dú)的工作簿并且以工作表的名稱來命名新建的工作簿。看代碼
Sub 另存所有工作表為工作簿()
Dim sht As Worksheet, mypath
Application.ScreenUpdating = False
mypath = ThisWorkbook.Path & "\" '取得當(dāng)前文件夾路徑
For Each sht In Sheets '對(duì)工作簿中的每一個(gè)Sheet進(jìn)行操作
sht.Copy '復(fù)制工作表
Kill mypath & sht.Name & ".xls" '刪除同路徑下同名工作簿
ActiveWorkbook.SaveAs mypath & sht.Name & ".xls" '保存復(fù)制的工作表
ActiveWorkbook.Close '關(guān)閉新保存的工作簿
Next
Application.ScreenUpdating = True
End Sub
上面的代碼很簡單。在這里說明一下,整個(gè)工作表的復(fù)制和部門區(qū)域的復(fù)制是不同的,工作表復(fù)制時(shí)會(huì)產(chǎn)生一個(gè)新的工作簿副本,而且這個(gè)工作簿副本就是當(dāng)前活躍工作簿即ActiveWorkbook,而你復(fù)制一個(gè)區(qū)域的話,比如復(fù)制所有有內(nèi)容的區(qū)域sheet1.usedrange,則復(fù)制的就是內(nèi)容,而不會(huì)產(chǎn)生一個(gè)新的工作簿。所以在將Excel工作表另存為工作簿的時(shí)候只要用工作表的Copy方法即可以了,而不必先新建一個(gè)工作簿,再將內(nèi)容復(fù)制進(jìn)去,這樣思路雖對(duì),但顯然麻煩了。本節(jié)示例文件下載地址http://pan.baidu.com/s/1qW17G9A
聯(lián)系客服