【问题标题】:How to read number of rows and columns in a CSV file using VBA如何使用 VBA 读取 CSV 文件中的行数和列数
【发布时间】:2014-12-31 11:23:59
【问题描述】:

我有 100 多个 CSV/文本文件(大小从 1MB 到 1GB 不等)。我只需要为每个 csv 文件创建一个 excel 表,呈现:

  • 列名
  • 列类型,即数字或字符串
  • 每列的记录数
  • 每列的最小值和最大值以及长度

所以工作表上的输出会是这样的(我不能在这里粘贴表格图像,因为我是这个网站的新手,所以请考虑下面的虚拟表格作为 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 代码?我处于非常初学者阶段,所以如果任何专家可以在代码方面帮助我,那将非常有帮助。 谢谢!!!

【问题讨论】:

  • 堆栈溢出不是代码编写服务。相反,我们在这里帮助解决编程过程中遇到的特定问题。
  • 是的,我了解 EWit 并感谢您的评论,但我只是想从像你们这样的专家那里获得一些指导来自动化这个过程(如果可能的话)。
  • 我可以看到 EWit 的观点 StackOverflow 非常适合分享解决特定问题的绝妙编码技巧和技术:但这个问题会将您带入几个不同的新知识领域,每个领域都需要一个漫长而复杂的系列来自第一原理的解释。当您有空请人为此任务编写代码时,我会提供一个更有经验的开发人员可以使用的答案。
  • 看看例如这里:stackoverflow.com/questions/9821013/…HTH
  • 你试过直接Workbooks.Open()吗?请发布您尝试过的任何代码。

标签: vba excel csv


【解决方案1】:

您可以尝试为此编写复杂的 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 数据库“连接”对象的工作,该对象将文件夹中的文本文件视为“表”,并编写代码以扫描文件名并构建 SQL 查询.对于使用 ADO 文本文件驱动程序的有经验的开发人员来说,这一切都相当简单。

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

这不是我给初学者作为教学练习的任务,它需要很多不熟悉的概念和技术,以至于在将其分解成一系列结构化的单独教程之前,他们将一事无成。

【讨论】:

  • 把它放到 Access 中是个好主意。虽然 Excel 中的 VBA 可以做到这一点,但它会有点乏味。你愿意接受这种方法吗?
  • 我已准备好一步一步完成这项繁琐的工作。请建议
猜你喜欢
  • 2013-06-09
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多