【问题标题】:Excel macro to open a folder of excel workbooks and copy 1 cellExcel宏打开一个Excel工作簿文件夹并复制1个单元格
【发布时间】:2015-08-19 15:06:13
【问题描述】:

我有一个包含 .xlsx 文件的文件夹,每个文件的布局都相同。

我需要在excel中写一个宏来依次打开每个文件(100+个文件) 然后从单个单元格中获取数据(名称),并将其放入新的 excel 工作表中,移至下一个并将其插入到最后一个下方,等等。

基本上给我一个来自数据而不是文件名的名称列表)

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这(几乎)正是您想要做的。下次在你问之前做一点谷歌搜索! :)

    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
    

    【讨论】:

    • 谢谢,我去看看,我确实做了很多,我尝试了一些,但它们似乎要么爆炸,要么复制整个工作表......
    • 没问题!我实际上不得不自己解决这个问题。关键是一旦您打开工作簿(在代码中),您可以将搜索参数缩小到单个单元格,而不仅仅是一个工作表。
    • 啊,它很接近,但不是我想要的,这会获取文件名,我需要的是来自某个单元格的数据。
    • @DigitalLightcraft 是的,但您只需进行很少的编辑即可完成您想要的操作。我会发布一个答案,希望能做你需要做的事情。
    • 还没有,工作中突然出现的东西,明天早上继续汇报!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多