我有一个包含一些数据的工作簿,我想过滤这些数据,然后将过滤后的数据保存到新工作簿中。功能如下:
Sub bleh()
For Each i In Number
~~ filter, copy, paste, save ~~
Next i
End Sub
除了优化代码外,
更快更安全或者别的什么?
感谢您的投入。
答案 0 :(得分:5)
1,300个文件?忘记VBA,忘记Excel互操作。
我会使用一些C#或VB.NET,并使用OpenXML 使用文件的结构,在内存中异步生成1,300个OpenXML文档(即工作簿)(希望不是数百个)每张数千行数据),然后一旦你掌握了所有需要知道的内容,就迭代所有这些工作簿对象并按顺序将它们保存到磁盘上(可能显示进度条或其他内容)。无论如何,使I / O异步都无济于事。
每个文件写入都将包含在try/catch
块中,并且过程中抛出的任何异常都将通过记录足够的信息来识别失败的纸张(可以输出到该进度条下的锁定文本框)来处理,然后继续尝试下一个。
在VBA中执行此操作将永远运行:为每个工作簿创建,保存和关闭4秒 - 您的宏将运行至少5,200秒,这几乎是一个半小时。