Board logo

標題: [發問] (已解決)如何將多個檔案彙總至一個檔案中(分季) [打印本頁]

作者: freeffly    時間: 2011-6-6 20:46     標題: (已解決)如何將多個檔案彙總至一個檔案中(分季)

本帖最後由 freeffly 於 2012-2-22 17:01 編輯

我有110幾各檔案檔案名稱如200101前面4碼是年度後面兩碼是月份
這些檔案都放在同一個資料夾中
我想要200101、200102、200103的資料依序分別貼到彙總檔案中的第一個工作表
200104、200105、200106的資料依序分別貼到彙總檔案中的第二個工作表
如此依序將資料夾中的檔案都貼到彙總檔案中
請問這個程式碼要如何寫?
作者: luhpro    時間: 2011-6-7 00:29

本帖最後由 luhpro 於 2011-6-7 00:35 編輯

依你的需求來看基本上我們要做的就是 :
1. 找到需要處理的檔案
2. 建立新的(或找到這個) Excel WorkBook
3. 將該季三個月的檔案中的Sheet 新增(Copy)到這個 WorkBook
4. 給定該季的檔案名稱並存檔後關閉
5. 繼續處理下一個檔案

第 1. 個步驟可以用 Dir 指令來達成.
第 2 ~ 4 的步驟我大概列出一些步驟給你參考 :
  1.   Dim sSouFile$, sTarFile$
  2.   Dim shSou, shTar

  3.   '執行前請先在工作目錄下建立一個 Ans 目錄, 用來存放轉換過後的檔案, 可避免新建的檔案也被 Dir 納入處理造成錯誤結果
  4.   
  5.   '這裡使用 dir 指令找到需要處理的檔案並開啟它, 焦點設在要 Copy 的 Sheet
  6.   '以下假設該檔案名稱已經賦予給 sSouFile 了, 即 sSouFile = "200101.xls" 之類
  7.   'sSouFile = "200101.xls"

  8.   Application.DisplayAlerts = False
  9.   
  10.   Set shSou = Sheets(1) ' 假設 200101.xls 檔案中要 Copy 的是 Sheet(1)
  11.   With shSou
  12.     sTarFile = Left(sSouFile, 4) & Right("0" & Int((Val(Mid(sSouFile, 5, 2)) - 1) / 3) + 1, 2) ' 轉換成季檔名
  13.    sTarFile = ThisWorkbook.Path & "\Ans\" & sTarFile & ".xls"
  14.       
  15.     .Copy
  16.       
  17.     Set shTar = ActiveWorkbook.ActiveSheet
  18.    
  19.     With shTar.Parent
  20.       shTar.Name = Mid(sSouFile, 5, 2)
  21.       .SaveAs Filename:=sTarFile
  22.       .Close
  23.     End With
  24.   End With
  25.     Application.DisplayAlerts = True
複製代碼
上述程式還有一個問題就是每個檔案都只有一個 Sheet,
因為怎麼把 Sheet 新增到某個檔案中的某個Sheet前(或後)面,
這點我還沒測試出來.
作者: freeffly    時間: 2011-6-7 06:32

回復 2# luhpro


    謝謝大大提供這方式讓我思考
    雖然還沒有全部解決我的問題
    不過已經讓我看到一些原本沒想到的東西




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)