【发布时间】:2015-08-19 15:06:13
【问题描述】:
我有一个包含 .xlsx 文件的文件夹,每个文件的布局都相同。
我需要在excel中写一个宏来依次打开每个文件(100+个文件) 然后从单个单元格中获取数据(名称),并将其放入新的 excel 工作表中,移至下一个并将其插入到最后一个下方,等等。
基本上给我一个来自数据而不是文件名的名称列表)
【问题讨论】:
我有一个包含 .xlsx 文件的文件夹,每个文件的布局都相同。
我需要在excel中写一个宏来依次打开每个文件(100+个文件) 然后从单个单元格中获取数据(名称),并将其放入新的 excel 工作表中,移至下一个并将其插入到最后一个下方,等等。
基本上给我一个来自数据而不是文件名的名称列表)
【问题讨论】:
这(几乎)正是您想要做的。下次在你问之前做一点谷歌搜索! :)
http://www.excel-easy.com/vba/examples/files-in-a-directory.html
粗略的代码不确定它是否会工作:但这是我发送给您的示例中您需要修改的基本概念。如果你再看一下这个例子,它会做你需要的一切,然后是一些。由于您对所有工作表都不感兴趣,因此您不必遍历工作簿中的所有工作表。您可以打开它,阅读您感兴趣的单元格,然后将其关闭。 Do While 循环将为您目录中的每个 Excel 文件执行此操作。再次!请在使用前相应地修改此示例。
Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer
Application.ScreenUpdating = False
directory = "c:\test\"
fileName = Dir(directory & "*.xl??")
Do While fileName <> ""
i = i + 1
Workbooks.Open (directory & fileName)
Workbooks("files-in-a-directory.xls").Worksheets(1).Cells(i, 1).Value = Workbooks(fileName).Worksheets(1).Cells(x, y) <-- whatever your cell of interest is
Workbooks(fileName).Close
fileName = Dir()
Loop
Application.ScreenUpdating = True
【讨论】: