Monday, 22 May 2006

Speed Up VBA

这两天在修改其他人的VBA程序。Group里的人,一直抱怨MS Office的VBA速度太慢。看了看Online Help,简单地加了两行代码,现在的运行速度比以前快了四倍。

这中间的关键,只是应用了VBA中Application.ScreenUpdating这个选项。在开始运行VBA的时候,设置ScreenUpdating=False,关闭屏幕更新;在程序结束前,再设置ScreenUpdating=False。这样在VBA执行的时候,就不必浪费CPU在屏幕更新上了,运行速度得以大大提高。

结合我前面的一篇,在VBA中直接将结果输出到MDI文件中。在最初的测试中,设置了ScreenUpdating=False,虽然产生结果文档的速度提高了,但PrintOut这一步花费了不少时间。我尝试着在PrintOut之前恢复设置ScreenUpdating,之后再关闭设置ScreenUpdating以进行后续文档的产生。这样处理之后,PrintOut的速度也得到很大的提高。

为什么要这样处理呢?我的理解,关闭ScreenUpdating,自然提高文档计算和生成速度,但在PrintOut的时候,需要知道完整的文档内容,而MDI Writer似乎在等待ScreenUpdating之后的完整的文档,才开始干活。这时候,需要打开ScreenUpdating,让文档Update一下,才能比较快地PrintOut。或许MDI真的是Image文件吧。

如此看来,只有灵活使用ScreenUpdating,才能Speed Up VBA。

其实不仅仅是VBA,其它的一些程序,比如字处理、GIS、图形图像处理等等,UI上的每一步操作,当然是需要立即Update的,但在内部的API上通常会提供类似ScreenUpdating这样的选项,这样在程序化、批量处理的时候,能够加快运行速度。

Sunday, 21 May 2006

Microsoft Office Document Image Writer Options

在Microsoft Office 2003中包含了Microsoft Office Document Image Writer,一个虚拟的打印机,可以将打印结果保存到文件(MDI, Microsoft Office Document Imaging, 也简称MODI)中。个人猜测,是微软企图打击PDF格式文件的一个工具。

MODI Writer和Office其它工具在一起,还是比较好用的。特别是对一些大的、一次性产生而又不再修改的文档,保留原始文件太占空间,用MDI就很方便,打开或打印的速度也比较快。一旦“打印”,输出到文件之后,会在MODI中将输出的结果显示出来。

对话框中有选项,可以选不显示,但缺省是是要显示的。通常情况下,这个缺省设置是无所谓的。不过近日,当我用VBA大批量输出MDI文件的时候,批量输出的MDI文件,统统被打开、并显示出来了。这就令人比较头疼。VBA也没有提供关闭此选项的功能。

最后的解决办法是,修改注册表。似乎微软的东西,大部分的设置都是在注册表里。MODI Writer选项的具体位置在:[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\MODI\MDI writer],修改“OpenInMODI”的值为0。

Friday, 19 May 2006

黑色的代价


Apple的MacBook终于发布了,最贵的是黑色的MacBook(US$1,499.00)。其实和白色的相比,只是硬盘相差了20G。如果补上这个差别,也就是US$1,349.00。这额外的US$150.00,就是黑色的代价。

如Intel所宣称的,Core Duo 2的性能将会有大的提升,相应移动版的Merom也有大的进步。相信半年以后,基于Mac OS X 10.5和Merom的MacBook会比较成熟。真有点心动了。

Sunday, 14 May 2006

Typo3 4.0之多站点安装

Typo3 4.0出来有一个月了,一直没有时间安装。这个周末刚好得空,就装了一下,很顺利。这里列一下基本的几个步骤。

1. Web Server环境的准备。我的测试系统还是Windows下的coLinux(Debian 3.0),Apache2 + PHP 4。之前安装过Typo3 3.8,所以一些相关的软件包(如imagemagick等)已经安装好了。

2. 从SourceForge下载Typo3 4.0,包括typo3_src-4.0.tar.gzdummy-4.0.tar.gz

3. 解压缩这两个tar包。

$ tar xvzf typo3_src-4.0.tar.gz
$ tar xvzf dummy-4.0.tar.gz

4. 移动到Web文件目录下,并修改文件owner。coLinux的web server用户是www-data,在安装过程中,需要有"写"权限。

$ sudo mv typo3_src-4.0 /var/www/.
$ sudo mv dummy-4.0 /var/www/mytypo3
$ sudo chown -R www-data:www-data /var/www/typo3_src-4.0
$ sudo chown -R www-data:www-data /var/www/mytypo3

5. 打开Web Browser,进入http://192.168.0.40/mytypo3,将进入Typo3的“1-2-3-GO”新站点安装过程。这之后的过程,和3.x版本的非常类似。这样就完成了一个Typo3空白站点的安装。

为了对多个Typo3站点提供服务,只需将dummy-4.0.tar.gz再次解压缩,并移动到/var/www就行了。当然,路径名就不能再用mytypo3,需要改为其它不同的名字,如newtypo3。然后访问http://192.168.0.40/newtypo3来完成另一个新站点的安装。在Typo3中,typo3_src-4.0中的代码,可以为多个Typo3站点共用。各站点只需要拥有各自的dummy代码即可。同3.x版本相比较,在路径符号链接(symbolic link)的设置上,4.0版本略有简化。

必须注意的是,同3.x版本一样,只能在Unix-Like系统下,共享typo3_src-4.0代码,对多个Typo3站点提供服务。Windows系统下,没有符号链接(symbolic link)的概念,无法做到多站点核心代码共享。