[英]Combine multiple Excel workbooks into a single workbook
我是 Visual Basic 的新手。 我可以使用 Excel 2010 或 Excel 2013 來完成這項任務。
我有幾十個工作簿,每個工作簿的第一個工作表上都有數據。 例如 One.xlsx、Two.xlsx、Three.xlsx、Four.xlsx 每個都包含其各自 Sheet1 上的信息。
我需要將每個工作簿中 Sheet1 上的信息合並到一個工作簿中,這些工作簿的工作表以原始工作簿的文件名命名。 例如,combined.xlsx 將有 4 張名為一、二、三、四的工作表。 在每種情況下,底層工作表上的所有信息都應復制並合並到新工作簿中,如下所示。
我在網上找到了這個宏/插件,它使我接近使用打開文件插件選項所需的內容。
http://www.excelbee.com/merge-excel-sheets-2010-2007-2013#close
Open Files Add-In 成功地允許我將各種工作簿的工作表聚合到一個工作簿中。 但是,選項卡不是根據原始文件的名稱命名的。
現在所有底層工作簿都將位於同一個文件夾中。 如果這發生變化,瀏覽和選擇文件的能力會很好,但如果這太困難,只需在 Visual Basic 代碼中指示目錄路徑即可。 至於最終的組合輸出可能應該是一個新工作簿,新工作簿的文件名並不那么重要。 例如,它可以被稱為combined.xlsx。
下面完成任務。
Option Explicit
Private Sub CommandButton1_Click()
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
Dim WrdArray() As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
directory = "c:\test\"
fileName = Dir(directory & "*.xl??")
Do While fileName <> ""
Workbooks.Open (directory & fileName)
WrdArray() = Split(fileName, ".")
For Each sheet In Workbooks(fileName).Worksheets
Workbooks(fileName).ActiveSheet.Name = WrdArray(0)
total = Workbooks("import-sheets.xlsm").Worksheets.Count
Workbooks(fileName).Worksheets(sheet.Name).Copy after:=Workbooks("import-sheets.xlsm").Worksheets(total)
GoTo exitFor:
Next sheet
exitFor:
Workbooks(fileName).Close
fileName = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
在 Excel 中按Alt+F11
,這將打開 Excel VBA 編輯器。
文章http://www.excel-spreadsheet.com/vba/debugging.htm解釋了如何使用它的一些基礎知識。
在Module1
有 2 個簡短的子程序opensheets
和merge
包含約 50 行代碼。
在您不理解的單詞內使用帶有光標的F1
,以了解其含義。
一旦你理解了代碼的作用,你就可以根據自己的需要定制它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.