我们有很多通过 VBA 和 Excel 生成的报告。只有一小部分报告是实际计算 - 大部分工作是 SQL 调用和单元格的格式化/写入。其中最长的需要几个小时,大多数每次大约需要 20-30 分钟。
VBA/Excel 代码插入 VB6 桌面应用程序使用的 dll 中 - 所有 sql 调用都是在此处进行的。虽然我确信这里还有改进的空间,但我担心的不是这个 - 桌面应用程序相当敏捷。
有两个 VBA 函数被大量使用:它们称为 GetRange 和 SetupCell,它们几乎总是一起出现。 GetRange 函数是 Excel.Range 对象的包装器。它需要一张表和 4 个表示范围范围的值。它的主要用途是选择要编辑的单元格。似乎优化它的机会不大,但这是最好的方法吗?
它的合作伙伴是SetupCell。这需要一个 Excel.Range 对象、文本和有关单元格的十几个参数(字体、边框等)。这些参数中的大多数都是可选的 bool 值,但同样,这似乎非常浪费。其中一些可以在死后设置,但有些则取决于单元格中包含的值。
这些函数中包含相当多的代码,主要是 if 语句和工作不喜欢我发布它。
我想我有两个问题:有没有更好的方法,它是什么和是否有免费的分析器,我可以用它来查看大部分时间是否在这里还是在 dll 中?
最佳答案
对于一份报告来说,几个小时是荒谬的。
如果问题是 VBA,请购买“Professional Excel Development”(stephen Bullen、Rob Bovey 等人):这有一个名为 PerfMon 的免费 VBA 分析器。
如果问题是 Excel 计算,请参阅 http://msdn.microsoft.com/en-us/library/aa730921.aspx?ppud=4
但我猜问题是与逐个单元引用事物相关的高开销:您应该始终一次在大块单元中工作。
关于excel - 免费的 VB6/VBA 分析器和 Excel 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/921543/