程序中有一个打开文档的操作,使用者如果执行这个操作将创建一个外部的WORD Application供使用者查看某个WORD文档,最后由使用者自己关闭这个WORD应用我要做的是:1.如果在WORD应用打开的情况下,如果使用者再次执行打开文档的操作,则在同一个WORD应用中打开新的文档,而不是又创建一个新的WORD应用。
           2.如果当前没有WORD应用打开,则创建一个新的应用以显示文档。
           总之是程序只能同时创建一个WORD应用           我的做法是设定一个Word.Application的窗体级的public 变量,但在做打开文档操作的时候,我怎么才能知道这个变量当前是否指向一个打开的WORD应用呢?如果是,就不需要创建新的WIORD应用了。不然就创建新的。
  实际上我想知道的是怎样判断一个变量指向的对象是否有效!C++里可以用NULL来判断对象是否存在,以前没有用过VB,应该怎么做呢!谢谢大家!

解决方案 »

  1.   

    on error resume next
    set wdApp=getobject(,"Word.Application") '如果已运行,抓住它
    if err.number<>0 then 
    set wdApp=new Word.Application
    end if
      

  2.   

    可是这样,当有一个WORD应用打开的时候,如果再进行打开操作,还是会有新的WORD应用被打开!
    怎么回事呢?
      

  3.   

    事实上,我这么做过,一开始判断
     If wdApp is Nothing then
        Set wdApp = New Word.Application
     end if
     然后打开文档。
     
    第一次做打开操作后(这时wdApp肯定不是Nothing了),只要这个打开的Word 不关闭,此后无论做多少次打开操作,都在同一个WORD应用中打开这些文档,可是此后如果关闭这个WORD应用,再要做打开操作时,就会出错,好像是说找不到远程对象还是远程对象无法执行什么的。可以肯定的是,当那个WORD应用关闭后,wdApp的值不会回到Nothing,所以一开始的判断就跳过去了,可我怎么才知道它现在的值是多少呢!伤脑筋!
      

  4.   

    那这样也行
    Private WithEvents wdApp As Word.Application
    ......
    .......Private Sub wdApp_Quit()
    Set wdApp = Nothing
    End Sub