最近有格友在問,有沒有將多個 Excel 活頁簿 (Workbook) 合併 成一份的 VBA 程式碼 ?
嗯 ~ 關於這個問題,在那當時果編手邊還真的沒有現成的程式碼可提供 ●﹏●
但格友的內心呼喊 ~ 果編可是有記在心裏面,也有列成工作項喔 (*・ω< )
最近果編終於找到了點時間,所以趕緊先弄了支簡易版的程式碼提供給有這樣需求的人參考
Excel 活頁簿 (Workbook) 合併
操作步驟
- 首先將要進行合併的 Excel 活頁簿 (Workbook),統統的放進去 D:\temp 資料夾下面,如上圖所示
- 開啟 EXCEL 應用程式,並新增一個空白活頁簿(合併後的內容會放在這本活頁簿中)
- 接著按下快鍵盤快速鍵 ALT + F11,接著會開啟 Microsoft Visual Basic for Applications 視窗
- 再來點擊上方選單的 插入(I) > 模組(M),接著把下方的程式碼貼入程式碼的視窗中
- 最後按下鍵盤上的 F5 按鍵,會跳出一個巨集儲存的視窗,最後按下 ⌈執行⌋ 按鍵,就會將C:\temp 資料夾下面的所有活頁簿 (Workbook) 內容都合併到這個活頁簿了喔
注意事項
- 所有的Excel 活頁簿 (Workbook) 中的資料都會被複制到執行程式碼的活頁簿之中
- 複制過來的Excel 活頁簿 (Workbook)內容,工作表會以該 EXCEL 活頁簿的檔名重新命名
- 該段 VB 的巨集程式碼,不適用指定活頁簿 (Workbook)中特定工作表(Worksheet)的複制
52 則留言
您好 因為太多問題 有私你FB可否回應
Hi Syuan,
可以喔,可是我有空閒時才能回覆喔。
HI JASON翰~
您好 ,因為我本身檔案有用中文名稱(檔案有字眼重複),如果目前顯示
無法將工作表命名為這個名稱,因已有其他工作表使用這個名稱…..
該如何解
真的超級感謝你
感謝
Hi Syuan,
可以把第8行 Sheets(1).Name = “Combined” 中的 Combined 替換成你要的名稱
HI JASON翰
就是出現 翻譯錯誤:無法指定至唯讀屬性,第一則留言一樣的語法部分呈現紅色
Sub CombineSheets() 變黃底
感謝
Hi Syuan,
請再試著重貼一次程式碼
希望這次可以幫到你
HELP!!!
你好,EXCEL版本為2010,執行到F5時出現”編譯錯誤 語法錯誤”
Filename = Dir(Path & “*.xl*”)
Do While Filename <> “”
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
這些行數顯示紅字,請問該如何排解~~~
Hi Syuan,
請問有其他的錯誤訊息嗎?
不好意思,我依照您的步驟做到按F5時,會跳出第5行「編譯錯誤 語法錯誤」,請問是什麼原因呢?
繼成,
請問你用的EXCEL是幾版的?
我的版本是2019的><
繼成,
那錯誤訊息除了編譯錯誤外,還有其他的訊息嗎?
Hello 你好~~
我想請問如果我想合併多個活頁簿內的同一個SHEET, 用這個方式可以合併嗎?
謝謝~~
Hi cai wei,
可以的喔
不好意思,我依照您的步驟做到按F5時,會跳出第5行「編譯錯誤 語法錯誤」,請問是什麼原因呢?
請問要怎樣才能得到多個活頁部合併的程式碼呢?
因為你這網頁裡沒有秀程式碼,謝謝
Hi 林佳怡,
程式碼頁面上就有耶,你要不要再看一次?
那要如何修改呢?可否指點一下 謝謝
Hi 噗,
原則上就是只要讀取你要的EXCEL的頁籤
就可以達到你的需求,這部份你可能要動手玩玩看
因為最近太忙,沒時間去幫你改程式 XDDD
不好意思 想請問一下 如果我有30個活頁簿 要合併 , 每個活頁簿都有ABCD四個工作表,能否把所有A的工作表 都合併在同一個活頁簿裡嗎?能個別分開合併嗎?
Hi 璞,
你需要的功能是可以達到的
但要動手改改程式才行達到
你好,
不好意思, 我發現是我誤會了
我以為編輯VBA是ctrl+F11, 結果是Alt+F11
我想ctrl+F11應該是原本內建的快速鍵, 那就沒問題了^^;
另外想請教, 如何把上述的程式嗎存為巨集呢?
謝謝.
Hi wendy,
忙中難免會有點小差錯 ^^
VBA本身你存檔時,就會跟著EXCEL一起存起來了
你好, 謝謝你的分享.
貼了上述的程式碼後, 成功的合併不同sheet資料
但是關掉excel再重開, 在巨集就找不到此功能
覺得應該是沒存檔, 就在VBA存檔, 結果不知道怎麼存的…
現在在excel裡按ctl+F11,會跑出新的一個sheet名稱為巨集1
再按一次ctl+F11, 會再跑出新的一個sheet名稱為巨集2
且都沒有合併功能
有檢查過巨集裡, 沒有新增的巨集
我完全不會用VBA,也不知道怎麼把這個功能刪除, 請問可以幫幫我嗎? 謝謝
假如我的檔案為1-5 希望進入之後也是1-5 可是進去之後 變成5-1
Hi 黃騰,
目前用的函式Dir,沒有提供排序的選項
所以需要自己刻一個排序的函式來達到
JASON翰 你好
請問根據上面的語法,有辦法將所有excel合併到指定的活頁簿嗎?其實就是希望不要跟巨集放在同一個活頁簿!
不知道有沒有甚麼辦法?
謝謝
Hi 米夏,
蘋果米目前想到最快的方式,就是將執行完的檔案中的巨集直接移除
Hi Jason翰,
有一個問題要請你幫忙,如果檔案裡面有2個以上的sheet,他就會有錯誤。因為這個vba在合併檔案時,sheet name是原來檔案的名稱,所以同一個檔案有多個sheet,他會因為同樣的sheet name而失敗!
請大大幫幫忙~~
謝謝
Hi Sibyl,
可以將第11行的程式碼註解掉或刪掉
這樣應該就能解決你的問題了
hello….謝謝你的幫忙~~ 但還是想請問 這有辦法解決嗎?
Hi 12,
有試寫了一版VBA的程式來執行
但效能上還是無法滿足
所以暫時上還沒有找到有效的解法
好的,我了解了。謝謝你的幫忙 ~~
Hi 12,
果編寫了一支新的VBA, 你可以複製回去試試
https://appleme.club/worksheets_cell_compare/
hello…檔案開啟後一起跑….變的非常慢無法完整打開…請問是怎麼了….?
Hi 12,
可能開啟檔案時,要重新計算每個儲存格的值
所以才會變的這麼慢吧
Hi Jason翰,
謝謝你的範例,可是有一個問題,如果合併的檔案中有一樣sheet name的話,它就會失敗!
其實我是希望所以檔案裡面的資料最後是合併在同一個sheet的裡面的~~
再麻煩你幫幫忙了!
Hi Sibyl,
還是請你給個範例檔,讓果編了解一下你的問題在那
這樣果編要幫忙也才施的上力 XDDD
嗯嗯…好的 謝謝你喔 ^^
Hi 12,
修正一下公式, 感覺是可以用的
你下回去看看有沒有什麼不正確的地方
https://www.dropbox.com/s/0i2nwj14l9mrb2i/test.zip?dl=0
嗯…謝謝你~但我剛剛有試過,有符合000但在001卻變成N/A…..
Hi 12,
我就是有看到這個情況,所以把公式先刪掉了
看起來這個問題只能寫程式下去跑了
公式還找不到有合適的做法 XD
好的,不好意思請問方便提供email嗎?
Hi 12,
直接在留言中提供EMAIL比較有問題
看您是否方便先上傳至雲端硬碟再提供給果編下載嗎?
抱歉…想請問你… 開起與你共用似乎也需要email…?
Hi 12,
用類似Mega, 百度等等的雲端
就可以直接獲取下載網址了喔
https://mega.nz/
不好意思 想請問一下 我有留下共用網址 但按下REPLY都沒有出現留言是什麼原因?
Hi 12,
檔案有看到了喔,為了你的資料安全所以沒有公開
果編會想想怎麼解決你的問題
Ok 謝謝你~ 再請你看看我的問題…………
Hi 12,
還沒有試出來, 可能要點時間
最近果編有點小忙 XDDD
我想請問 假設我工作表1的資料是A欄到H欄,B欄主要是分鐘時間資料但是是間斷資料,但我想要的是每一分鐘都有資料,因此在工作表2做了一個完整的連續時間順序資料,請問該怎麼將兩個工作表合併,讓工作表1有資料的地方跑到工作表2,而工作表1時間沒資料的部分在工作表2仍然是沒資料?
謝謝
Hi 12,
可以提供範例參考嗎? 不然不是很懂你的需求耶