将 CSV 文件的内容加载到数组而不打开文件[关闭]

2024-01-11

我需要将 6000 多个 csv 文件整理成一个 csv 文档。目前的VBA流程是: 1. 打开单独的CSV数据文件 2.根据行数将文件内容加载到数组中 3. 关闭单个 CSV 文件 4. 处理数组

为了提高代码和处理的效率,我希望有一种方法可以将各个 CSV 文件中的数据加载到数组中,而无需打开和关闭每个文件。

我使用的是 Excel 2011 for Mac。


好吧,我假设所有 6000 个文件都具有相同的格式。

我的测试条件

  1. 我有一个名为 C:\Temp\ 的文件夹,其中包含 6000 个 CSV 文件
  2. 所有 csv 文件都有 40 行和 16 列
  3. 在 Excel 2010 中进行了测试。无法访问 2011。将在 2011 年进行测试,大约需要 30 分钟。

我运行了下面的代码,代码只花了 4 秒。

Option Explicit

Sub Sample()
    Dim strFolder As String, strFile As String
    Dim MyData As String, strData() As String
    Dim FinalArray() As String
    Dim StartTime As String, endTime As String
    Dim n As Long, j As Long, i As Long

    strFolder = "C:\Temp\"

    strFile = Dir(strFolder & "*.csv")

    n = 0

    StartTime = Now

    Do While strFile <> ""
        Open strFolder & strFile For Binary As #1
        MyData = Space$(LOF(1))
        Get #1, , MyData
        Close #1

        strData() = Split(MyData, vbCrLf)
        ReDim Preserve FinalArray(j + UBound(strData) + 1)
        j = UBound(FinalArray)

        For i = LBound(strData) To UBound(strData)
            FinalArray(n) = strData(i)
            n = n + 1
        Next i

        strFile = Dir
    Loop

    endTime = Now

    Debug.Print "Process started at : " & StartTime
    Debug.Print "Process ended at : " & endTime
    Debug.Print UBound(FinalArray)
End Sub

文件夹截图

代码输出的屏幕截图


UPDATE

好的,我在MAC上测试过

我的测试条件

  1. 我的桌面上有一个名为 Sample 的文件夹,其中包含 1024 个 CSV 文件
  2. 所有 csv 文件都有 40 行和 16 列
  3. 在Excel 2011中测试过。

我运行了下面的代码,代码花费了不到 1 秒的时间(因为只有 1024 个文件)。所以我预计它会再次运行 4 秒,以防有 6k 个文件

Sub Sample()
    Dim strFile As String
    Dim MyData As String, strData() As String
    Dim FinalArray() As String
    Dim StartTime As String, endTime As String
    Dim n As Long, j As Long, i As Long

    StartTime = Now

    MyDir = ActiveWorkbook.Path
    strPath = MyDir & ":"

    strFile = Dir(strPath, MacID("TEXT"))

    'Loop through each file in the folder
    Do While Len(strFile) > 0
        If Right(strFile, 3) = "csv" Then
            Open strFile For Binary As #1
            MyData = Space$(LOF(1))
            Get #1, , MyData
            Close #1

            strData() = Split(MyData, vbCrLf)
            ReDim Preserve FinalArray(j + UBound(strData) + 1)
            j = UBound(FinalArray)

            For i = LBound(strData) To UBound(strData)
                FinalArray(n) = strData(i)
                n = n + 1
            Next i

            strFile = Dir
        End If
        strFile = Dir
    Loop

    endTime = Now

    Debug.Print "Process started at : " & StartTime
    Debug.Print "Process ended at : " & endTime
    Debug.Print UBound(FinalArray)
End Sub

文件夹截图

代码输出的屏幕截图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 CSV 文件的内容加载到数组而不打开文件[关闭] 的相关文章

随机推荐

  • 使用从 Azure AD 和 ADAL 获取的令牌访问本地 SharePoint

    The Goal 使用 OAuth 从基于 Apache Cordova 的移动应用程序通过 REST 请求访问本地 SharePoint 数据 到目前为止我已经尝试过的 1 Azure 移动服务 混合连接 AAD ADAL 与博文类似代表
  • Qt 中的测试用例在哪里?

    我已经阅读了 Qtestlib 手册和教程 并逐步了解了开发测试的过程 如果我是对的 Qt 已经开发了一些测试用例来测试其功能 谁能告诉我Qt源代码树中这些代码在哪里 如果我必须修改它们 测试用例 我可以这样做吗 提前致谢 尼夫 单元测试不
  • 使用 Hilt 注入 CoroutineWorker:无法实例化woker

    有人问过同样的问题 但它们对我不起作用 一开始我使用的是最新版本的工作管理器 即 2 7 alpha 3 但我降级了 因为它只兼容 android 12 预览版 sdk 错误仍然存 在 它无法实例化工作人员 因为这些依赖项包含在工作人员的构
  • 将 label 标签包裹在表单项周围还是使用 HTML 中的“for”属性更好?

    我知道您可以同时使用两者 但是使用其中一个比使用另一个更好吗 如果是这样 为什么 for 属性的示例
  • 如何使用 msdeploy 并定位特定站点?

    使用 msdeploy 和 msdeploy axd 处理程序时 任何部署到远程服务器的尝试都会遇到 401 未经授权的错误 并且服务器会记录日志 IISWMSVC AUTHORIZATION SERVER NOT ALLOWED 仅允许
  • Python:导入与函数同名的模块

    背景知识 第一次问SE问题 我对 Python 还很陌生 一般来说编程经验也不是很多 我四处搜寻 但没有找到这个问题的答案 非常感谢您的帮助 我的问题是 如何导入与函数同名的模块 具体来说 我正在使用 Python 符号数学库 sympy
  • 如何将 Pydantic BaseModels 列表转换为 Pandas Dataframe

    我似乎找不到任何内置方法可以简单地将 Pydantic BaseModels 列表转换为 Pandas Dataframe from pydantic import BaseModel import pandas as pd class S
  • futures::executor::block_on 和 block_in_place 之间是否存在性能差异

    我在同步方法内调用异步代码 此方法是特征的一部分 我无法异步实现它 所以我使用block on等待异步调用完成 将从异步代码调用同步方法 所以应用程序是在 tokio main 当某些事件发生 端点命中 时 它会调用同步方法 同步方法将调用
  • 如何向 jquery.datatables 列添加类?

    我为 jquery datatables 创建了一个大表 这对我来说非常有用 但我需要为每个 td 元素相对于其列设置一个类名 例如我想要一列 包括 th 和所有 td 有一个class volume 有这样的问题 我使用此代码来初始化该类
  • Xcode 6 - Main.storyboard 仅显示为源代码,缺少 Interface Builder

    不知何故 我的 Xcode 设置变得混乱 因为它只会将我的 Main storyboard 文件显示为 XML 代码 我被告知可以通过从 打开方式 菜单中选择界面生成器来解决此问题 但菜单下没有任何内容 唯一的 选择 是灰显的 我已经清除了
  • 模拟程序JoinPoint 签名

    我正在尝试模拟 ProceedingJoinPoint 类 但在模拟方法时遇到困难 这是调用模拟类的代码 ProceedingJoinPoint joinPoint Object targetObject joinPoint getTarg
  • 如何在python 3.4中安装xmlrpclib?

    当我尝试安装 xmlrpclib 时 我在 python 版本 3 4 中收到以下错误 下载 解压 xmlrpclib 找不到任何满足 xmlrpclib 要求的下载 一些外部托管的文件被忽略 使用 allow external xmlrp
  • Sonarqube Web 应用程序未启动

    我正在Windows下使用PostgreSQL9 5安装SN5 5 不幸的是 我遇到了错误 Webapp 未启动 下面是完整的堆栈跟踪 我想我首先在 将上下文初始化事件发送到类 org sonar server platform Platf
  • 如何将特定的可变“订单”保存到数据库中

    假设我有一些对象 并且我希望用户能够以他们希望的任何方式对它们重新排序 例如通过拖动它们 所以我会有 Cheese Muffins Milk 然后用户将 牛奶 拖到顶部 进行新订单 Milk Cheese Muffins 是否有最佳实践如何
  • 嵌套 JSON 对象 - 我是否必须使用数组来处理所有事情?

    有没有什么方法可以在 JSON 中嵌套对象 这样我就不必用所有东西制作数组 为了正确解析我的对象 我似乎需要这样的结构 data stuff onetype id 1 name John Doe id 2 name Don Joeh oth
  • djangorest框架更新序列化器中的方法,实例不会立即保存

    要更新的实例有 email protected cdn cgi l email protection 电子邮件要更新或更改为 email protected cdn cgi l email protection UserUpdateSeri
  • 如何获取所有带有特色图片的 WordPress 帖子?

    WordPress 3 中有特色图片功能 如何获取所有带有特色图片的帖子 这是我当前的自定义循环 loop new WP Query array posts per page gt 15 这应该有效 loop new WP Query ar
  • Javascript 事件处理和流程控制

    我正在尝试构建一个根据提供的输入加载的网页 基本上 我在 javascript 中的事件处理方面遇到了一些麻烦 来自 python 如果我想在继续显示下一个对象之前等待特定的键盘输入 我会创建一个while循环并在其中放置一个关键侦听器 P
  • MapKit 显示整个地球

    我正在尝试在 MKMapView 中绘制整个地球仪 通过捏合缩小 我只能缩小到一定程度 我希望能够缩小到这个级别以上 以在地图上显示整个地球 这似乎不是很困难 但我一直找不到任何解决方案 里面的地图MKMapView不会在侧面重复 因此您无
  • 将 CSV 文件的内容加载到数组而不打开文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要将 6000 多个 csv 文件整理成一个 csv 文档 目前的VBA流程是 1 打开单独的CSV数据文件 2 根据行数将文件内