如何使用VBA读取CSV文件中的行数和列数

时间:2014-12-31 11:24:00

标签: excel vba excel-vba csv

我有超过100个CSV /文本文件(大小在1MB到1GB之间)。我只需要为每个csv文件创建一个excel表,然后显示:

  • 列名称
  • 列的类型,即数字或字符串
  • 每列中的记录数
  • min&最大值&每列的长度

所以表格上的输出会是这样的(我不能在这里粘贴表格图像,因为我在这个网站上是新的,所以请考虑下面的虚拟表格作为excel表格):

         A           B         C             D           E          F           G

1   Column_name    Type     #records     min_value   max_value  min_length  max_length
2   Name           string   123456       Alis        Zomby          4         30
3   Age            numeric  123456       10          80             2          2

是否可以为此创建任何vba代码?我处于初级阶段,所以如果任何专家可以帮助我在代码方面,将会非常有帮助。 感谢!!!

1 个答案:

答案 0 :(得分:2)

您可以尝试为此编写复杂的VBA文件和字符串处理代码;我的建议是:不要。

更好的方法是询问:“还有哪些其他工具可以读取csv文件?”

这是列表数据,文件非常大。实际上,你应该使用电子表格阅读更大:它是数据库工作,你最好的工具包是使用MIN()MAX()和COUNT()函数进行SQL查询来聚合数据。

Microsoft Access有一套很好的“外部数据”工具可以读取固定宽度的文件,如果使用“链接数据”而不是“导入表”,您将能够使用SQL查询读取文件将所有这些千兆字节导入Access .mdb或.accdb文件。

在MS-Access之外,您正在使用ADODB数据库对象(Microsoft Active-X数据对象)和schema.ini文件查看中高级VBA。

您的文本文件schema.ini文件的链接在这里:

http://msdn.microsoft.com/en-us/library/ms709353%28v=vs.85%29.aspx

...然后你将完成创建ADODB数据库'connection'对象的工作,该对象将文件夹中的文本文件视为'tables',并编写代码来扫描文件名并构建SQL查询。对于使用ADO文本文件驱动程序的有经验的开发人员来说,这一切都非常简单。

我不能提供比这些一般提示更具体的东西 - 而且不像代码示例 - 因为这是一项非常复杂的任务,而且它不是真正的Excel-VBA任务;这是使用数据库工具最好的编程任务,除了在电子表格中显示结果的最后一步。

这不是我作为一个教学练习的初学者的任务,它需要许多不熟悉的概念和技术,在它被分解为一系列结构化的单独教程之前,它们无处可去。