将多个Excel工作簿合并到一个工作簿中
我是Visual Basic的新手。我可以使用Excel 2010或Excel 2013来执行此任务。将多个Excel工作簿合并到一个工作簿中
我有几十个工作簿,每个工作表的第一个工作表上有数据。例如One.xlsx,Two.xlsx,Three.xlsx,Four.xlsx每个都包含有关其各自Sheet1的信息。
我需要将来自每个工作簿的Sheet1上的信息合并到单个工作簿中,工作簿中的工作簿是从原始工作簿的文件名命名的。因此,例如combined.xlsx将有4张名为“一,二,三,四”的纸张。在任何情况下,所有关于基础工作表的信息都应复制并合并到新工作簿中,如下所示。
- 的格式,我需要
我发现这个宏/附加在网上说让我接近我需要使用打开的文件中添加选择。
http://www.excelbee.com/merge-excel-sheets-2010-2007-2013#close
打开的文件添加,在成功地让我来汇总各种工作簿的工作表到一个单一的工作簿。但是,这些选项卡并未从原始文件的名称命名。
- 正确聚合工作表,但工作表名称不正确。
现在所有基础工作簿将在同一文件夹中。浏览和选择文件的能力会很好,如果这种情况发生变化,但如果这太难了,只需在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个包含约50行代码的短子程序opensheets
和merge
。
使用F1
将光标放在您不理解的字词中,以了解它的含义。
一旦你明白了代码的作用,你可以根据你的需要量身定做。
我所期待的一些类似的代码来实现我的目标,而不是从头开始 – 2014-10-20 17:01:56
@JayC代码是存在的,就在宏,改变它来创建新的工作簿或重命名表是简单的俏皮话。但堆栈溢出是**没有代码写入服务**。你必须展示一些努力,编写一些代码,展示它,Stack Overflow可以帮助你诊断和克服具体的编码问题。我建议你开始解决你的任务,试着理解Merge-Macro.xlsm中的那些〜50行代码,并可能产生一些新的更具体的编码问题。到目前为止,你做得很好 – xmojmr 2014-10-20 17:56:57
谢谢,我同意并理解一些努力和问题的模板是必要的。不幸的是,链接的宏不可编辑,所以我不能用它来引导我。在这种情况下,一位同事能够让我开始工作,并进一步修改它以满足我的需求。 – 2014-10-20 20:29:07
是'import-sheets.xlsm'我正在运行宏的文件? – wviana 2016-07-15 20:21:14
您可以添加一些评论吗? – wviana 2016-07-18 12:23:19
不再需要,谢谢你的发布。帮助我很多。我做了一些改进,我应该分享一下吗? https://gist.github.com/wviana/31d8dac7718b952e1ccf43eb3ee062be我解决了一些变数,以方便操作,无需每次调用'Workbooks(fileName)'。对不起,葡萄牙语评论。 – wviana 2016-07-18 14:54:05