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