簡體   English   中英

將多個 Excel 工作簿合並為一個工作簿

[英]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 個簡短的子程序opensheetsmerge包含約 50 行代碼。

在您不理解的單詞內使用帶有光標的F1 ,以了解其含義。

一旦你理解了代碼的作用,你就可以根據自己的需要定制它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM