excel - 免费的 VB6/VBA 分析器和 Excel 最佳实践

标签 excel vba vb6 profiling

我们有很多通过 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/

相关文章:

VBA代码复制和粘贴事件列,其中合并单元格

vb6 - 需要在 Visual Basic 6 中创建 30 秒延迟

vba - 如何使用 VBA 从 Excel 图表中删除一个系列

Excel VBA 在同一过程中处理多个错误

excel - 无法引用工作表上的列表框

vba - 在编辑 MS Access 表单文本框时,如何获取 'Value' 属性?

vba - 在多页中动态设置焦点

excel - 从同一位置另存为具有动态日期的文件

VB6 mySQL更新问题

arrays - VBA数组排序功能?