积极答复者
VB6写的处理Word文档的程序为何不退出程序时正确运行一次,其后运行不正确?

问题
-
我用VB6写了一个处理Word文档的程序,先进行必要的引用后再
Public myDoc As Word.Document
Dim wdApp As New Word.Application主程序中凡是ActiveDocument均改成myDoc;
凡是ActiveWindow前均加了“myDoc.”;在Documents和Application前均加了“wdApp.”。
退出程序前的代码为:
'结束程序前关闭文档并释放Word对象
myDoc.Close '关闭文档
wdApp.Quit '结束Word对象
Set myDoc = Nothing
Set wdApp = Nothing '释放Word对象主程序中有部分代码(主要是常规转换,如去掉空格,回车符的上下标等问题),在主程序中调用若干子过程(用Call语句,如处理上下标、字体等)。在第一次启动程序时,程序运行正常,在不退出程序时,第二次转换主程序中的代码运行正确,但似乎要在Word运行子过程的代码根本不运行。因程序未退出,好像逐行调试也不能进行。
如果我退出程序,重新再运行又是正确的。我怎么也想不明白,网上查,似乎很多人遇到此问题,奇怪的是网上似乎都最后没有解决。作为临时解决办法,我在主程序的最后写成:
Unload Me
Shell App.Path & "\AAA.exe", vbNormalFocus当然接着可正确运行,这也是我没有办法的办法。
运行环境:
Windows XP SP2 + Office 2003 + VB6SP6
答案
全部回复
-
如不用wdApp.Quit,用wdApp.Visible=true,那不是Word也没有关闭吗?
我刚试了一下,第一次运行后不退出程序第二次也不能正常运行,甚至将要处理的Word文档锁定成了只读文件。
其实我在主程序的开始部分就写了下面3句:
'将WORD窗口最小化到任务栏,可加快运行速度
wdApp.Application.WindowState = wdWindowStateMinimize
wdApp.Visible = True '设置Word对象可见
aDoc.ActiveWindow.View.Zoom.Percentage = 100