none
VB6写的处理Word文档的程序为何不退出程序时正确运行一次,其后运行不正确? RRS feed

  • 问题

  • 我用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

    2008年11月15日 3:48

答案

  • 锁定成了只读文件?

     

    你上面不是有myDDoc.Close,为什么没关闭?

     

    你手工把word关掉,看看任务管理器没有word进程,再点第2次看看

    2008年11月16日 6:17
    版主

全部回复

  • 我怀疑是word没正常关闭,你不用wdApp.Quit,用wdApp.Visible=true看看

    2008年11月15日 4:09
    版主
  • 如不用wdApp.Quit,用wdApp.Visible=true,那不是Word也没有关闭吗?

    我刚试了一下,第一次运行后不退出程序第二次也不能正常运行,甚至将要处理的Word文档锁定成了只读文件。

     

    其实我在主程序的开始部分就写了下面3句:

     

    '将WORD窗口最小化到任务栏,可加快运行速度
     wdApp.Application.WindowState = wdWindowStateMinimize
     wdApp.Visible = True      '设置Word对象可见
     aDoc.ActiveWindow.View.Zoom.Percentage = 100

    2008年11月15日 6:24
  • 锁定成了只读文件?

     

    你上面不是有myDDoc.Close,为什么没关闭?

     

    你手工把word关掉,看看任务管理器没有word进程,再点第2次看看

    2008年11月16日 6:17
    版主