返回列表 上一主題 發帖

[發問] 請教EXCEL合併

回復 1# twcg
  1. Sub Ex()
  2.     Dim MergePath As String, FS As Object, MergeWorkbook As Workbook, E
  3.     MergePath = "D:\test\"  '合併檔案的資料夾
  4.     Set FS = CreateObject("Scripting.FileSystemObject").GETFOLDER(MergePath).Files
  5.     'FS=合併檔案資料夾中所有檔案物件的集合
  6.     Set MergeWorkbook = Workbooks.Add(xlWBATWorksheet)  '新開的檔案
  7.     Application.ScreenUpdating = False
  8.     For Each E In FS
  9.         If E Like "*.xls" Then  '檔案 的副檔名為xls
  10.             With Workbooks.Open(E)
  11.                 .Sheets(1).Copy MergeWorkbook.Sheets(1)  '將工作表 複製到新開的檔案中
  12.                 .Close
  13.             End With
  14.         End If
  15.     Next
  16.     Application.DisplayAlerts = False
  17.     MergeWorkbook.SaveAs MergePath & "合併.XLS"  '合併檔存檔
  18.     Application.DisplayAlerts = True
  19.     Application.ScreenUpdating = True
  20. End Sub
複製代碼

TOP

回復  GBKEE

    很好用的功能, 請問是否可以將工作表名稱按原來工作簿名稱命名?
ANGELA 發表於 2010-10-5 10:50

With Workbooks.Open(E)
       .Sheets(1).Copy MergeWorkbook.Sheets(1)  '將工作表 複製到新開的檔案中
     MergeWorkbook.Sheets(1).Name = E.Name
       .Close
End With

TOP

回復  GBKEE


    請問這要用什麼程式去執行
twcg 發表於 2010-10-5 13:01

請先將程式複製到檔案VBA專案裡 且修改MergePath 為合併檔案的資料夾為正確的路徑
方法一 如圖1



方法二 如圖2



方法三 如圖3    1.須將滑鼠移動到指定的程式碼  2.按F5 執行指定的程式

TOP

回復 8# b9208
MergeWorkbook.Sheets(1).Name =Mid( E.Name, 5, 6)

TOP

回復 11# qwern
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim MergePath As String, FS As String, Rng As Range
  4.     MergePath = "D:\test\"                                      '合併檔案的資料夾
  5.     FS = Dir(MergePath & "*.xls")                               '尋找 xls 檔案
  6.     If FS <> "" Then
  7.         Set Rng = Workbooks.Add(xlWBATWorksheet).Sheets(1).[a1] '新開的檔案(只有一張工作表)工作表的A1
  8.         Application.ScreenUpdating = False
  9.         Application.DisplayAlerts = False
  10.         Do
  11.             With Workbooks.Open(MergePath & FS)
  12.                 .Sheets(1).UsedRange.Copy Rng                     'MergePath & 中工作表資料  複製到Rng
  13.                 .Close
  14.             End With
  15.             FS = Dir                                              '繼續尋找(MergePath & "*.XLS")
  16.             Set Rng = Rng.End(xlDown).Offset(1)                   '重設Rng 為往下到最後有資料的儲存格下一個空白之儲存格
  17.         Loop While FS <> ""
  18.         Application.DisplayAlerts = False
  19.         Rng.Parent.Parent.SaveAs MergePath & "合併.xls"           '合併檔存檔
  20.         Application.DisplayAlerts = True
  21.         Application.ScreenUpdating = True
  22.     Else
  23.         MsgBox MergePath & " 沒有 xls 檔案"
  24.     End If
  25. End Sub
複製代碼
PS 按回覆鍵 你要回覆者會得到通知

TOP

回復 13# leungko
MergePath = "D:\test\"                                      '合併檔案的資料夾:這裡 要有 副檔名為 xls 的EXCEL檔案
FS = Dir(MergePath & "*.xls")                             '尋找 xls 檔案

TOP

回復 15# leungko

MergePath = "D:\test\"                                      '合併檔案的資料夾:這裡 要有 副檔名為 xls 的EXCEL檔案

紅色的路徑可修改為你中PC 有副檔名為 xls EXCEL檔案的資料夾

TOP

回復 17# leungko
再改一下試試看
MergePath = "C:\Documents and Settings\choikeun\Desktop\New\"                                      '合併檔案的資料夾

TOP

        靜思自在 : 每天無所事事,是人生的消費者,積極、有用才是人生的創造者。
返回列表 上一主題