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

我们有很多通过VBA和Excel生成的报告。 只有一小部分的报告是实际的计算 – 大部分工作是sql调用和单元格的格式化/写入。 其中最长的时间需要几个小时,大多数需要大约20-30分钟。

VBA / Excel代码插入VB6桌面应用程序使用的dll – 在这里所有的SQL调用。 虽然我确信这里有改进的空间,但这不是我所关心的 – 桌面应用程序相当快速。

两个VBA函数被大量使用:它们被称为GetRange和SetupCell,它们几乎总是一起出现。 GetRange函数是Excel.Range对象的包装器。 它需要一张表,并且范围的范围有4个值。 它的主要用途是挑选单元格进行编辑。 似乎没有太多的机会,但这是最好的方法吗?

它的合作伙伴是SetupCell。 这需要一个Excel.Range对象,文本和关于单元格的十几个参数(字体,边框等)。 大多数这些参数是可选的布尔值,但是再一次,这看起来非常浪费。 其中一些可以追授,但有些依赖于包含在单元格中的值。

这些函数中包含了相当多的代码,主要是如果声明和工作不会感激我发布它。

我想我有两个问题: 有没有更好的方法,是什么是否有免费的分析器,我可以用来看看是否大部分时间在这里或在DLL中?

几个小时的报告是荒谬的。

如果问题是VBA购买“专业Excel开发”(Stephen Bullen,Rob Bovey等人):这个免费的VBA分析器叫做PerfMon。

如果问题是Excel计算,请参阅http://msdn.microsoft.com/en-us/library/aa730921.aspx?ppud=4

但是我猜想,问题是与逐个单元引用相关的高额开销:您应该始终在大块单元中工作。

你有没有想过使用实际的报告解决scheme? 你的后端数据库是什么? 如果您使用的是MSSQL 2000或更高版本,则可以免费使用相当不错的报告解决scheme。 SQL Server报告服务 。

听起来好像这些报告花费了大部分时间格式化单元格。 这可能是为什么报告看起来如此缓慢,桌面应用程序没有。

或者,如果您事先知道格式并且相当静态,则可以预先格式化表单以减less某些工作。

我也会把它扔到那里 大多数报告解决scheme将允许条件格式化等,但是因为它们被devise为工作,因此这样的性能将比Excel中的性能好得多。

这不是一个分析器的build议,但它是一个build议加快Excel的macros,花费他们的时间更新屏幕。 通过在macros运行时closures屏幕更新,我得到了很好的结果:set Application.ScreenUpdating = False,并且还使用了许多其他类似的设置 。 当macros完成时,请确保将它们重新打开:P

这不是免费的,但你可以用这个configuration文件。 我怀疑该演示将足以满足您的需求: http : //www.aivosto.com/vbwatch.html

这听起来像VBA代码(或写入表单的VB代码)正在逐行进行,这可能需要很长时间,而且是糟糕的devise。 一次写入Excel作为变体。 数据全部导入后格式化表格。 谢谢罗斯