将多个Excel工作簿合并到一个工作簿中

我是Visual Basic的新手。 我可以使用Excel 2010或Excel 2013来执行此任务。

我在每个工作表的第一个工作表上有几十个工作簿。 例如One.xlsx,Two.xlsx,Three.xlsx,Four.xlsx每个包含其各自Sheet1上的信息。

我需要将每个工作簿中Sheet1上的信息合并到一个工作簿中,工作簿中的工作簿是从原始工作簿的文件名命名的。 因此,例如combined.xlsx将有4张名为“一,二,三,四”的纸张。 在任何情况下,所有关于基础工作表的信息都应复制并合并到新的工作簿中,如下所示。

  • 我需要的格式

在这里输入图像描述

我在网上发现这个macros/加载项让我接近我需要使用打开的文件添加select。

http://www.excelbee.com/merge-excel-sheets-2010-2007-2013#close

打开文件加载项成功允许我将各种工作簿的工作表汇总到一个工作簿中。 但是,选项卡不是从原始文件的名称命名的。

  • 正确聚合工作表,但不正确的工作表名称。

在这里输入图像描述

现在,所有底层的工作簿都将位于同一个文件夹中。 浏览和select文件的function将会很好,如果这种情况发生变化,但是如果这样做太困难,只要在Visual Basic代码中指出目录path就行。 至于由此产生的联合输出可能应该是一个新的工作簿,新的工作簿的文件名并不重要。 例如,它可以被称为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解释了一些基本的如何使用它&#x3002;

Module1有两个简短的子程序,并包含约50行代码。

在你不懂的单词中用光标F1 ,来了解它的含义。

一旦你明白了代码的作用,你就可以根据你的需要来定制它。