循环遍历csv的特定文件夹,将每个文件夹的第一行合并为一个工作簿

时间:2014-02-13 06:02:52

标签: vba loops csv

我查看过几个帖子,似乎无法找到合适的答案 - 类似,但不是我正在寻找的。

我想要一些代码在特定文件夹中循环遍历一系列csv文件(每次约200个)。它需要将每个这些csv文件的第一行的值导入/复制到一个(主)工作簿。这些csv文件名是数字(例如20140213075458),不应考虑任何不符合此条件的文件(14个字符,仅限数字和FileFormat = csv)。

非常感谢任何指导!

3 个答案:

答案 0 :(得分:0)

将Microsoft Scripting Runtime库添加到项目中,并使用Use FileSystemObject class循环遍历所有文件。您可以使用Like运算符检查文件名是否符合您的条件。

答案 1 :(得分:0)

我认为this加载项可能对您有所帮助。 RDBMerge用于合并多个Excel工作簿中的数据, 将csv和xml文件放入摘要工作簿中。

答案 2 :(得分:0)

我将概述您需要做的操作。你可以从中工作。

  1. 获取每个文件夹中每个文件的文件名:fname = Dir(Your_Folder_Path)

  2. 初始化文件读取计数器:i=1

  3. 循环浏览文件夹中的所有文件: Do While fname <> "" 'Loop all files in folder

  4. 检查您的条件:

    Extension = Split(fname, ".")(Ubound(Split(fname, "."))) 'Extract extension of file
    Name = Split(fname, ".")(Ubound(Split(fname, "."))-1) 'Extract name of file without extension
    If Extension = "csv" And Len(Name) = 14 And IsNumeric(Name) Then 'Check csv, length of name 14 and numeric name
    
  5. 打开csv,读取第一行并关闭它:

    Open Your_Folder_Path & fname For Input As #f1
    Line Input #f1, csvFirstLine
    Close #f1
    
  6. 将数据放入工作簿:

    ActiveSheet.Range("A" & i).Value = csvFirstLine 'Put line in corresponding row
    ActiveSheet.Range("A" & i).TextToColumns Comma:=True 'Separate data by comma
    i=i+1 'File counter +1
    
  7. 退出ifs并关闭循环:End If Loop