我是在java script中创建word.Application控件,代码如下:
     第一种方式:
     function xopen($sFileName) {
        /**
          * 创建对象
          */
        try {
          _objWordSheet = new ActiveXObject("Word.Application");
         //检测模板文件是否存在
         _objFileSystem = new ActiveXObject("Scripting.FileSystemObject");
        } catch (e) {
          alert("ActiveXObject对象不能创建,请把站点设为可信任站点");
          return null;
        }        for  (var i = 0; i < _objWordSheet.Documents.Count; i++) {
          if  (_objWordSheet.Documents(i).Item(i).Name == $sFileName) {
            alert($sFileName + "文件已打开,请先关闭在基它处已打它的此文件!");
            return null;
          }
        }
    第一种方式不管打开多少个word文档,_objWordSheet.Documents.Count得到的值始终是 0 ,但在VBA宏中用Application.Documents.Count又能得到正确的数值,为什么? 
               
   第二种方式:
   try {
          alert(_objWordSheet.ActiveDocument.Name);
          if (_objWordSheet.ActiveDocument.Name == $sFileName) {
            alert("已打开");
          }
        } catch (e) {
          alert(e.description);
        }
     第二种方也是,不管打开多少word文档,_objWordSheet.ActiveDocument得到的始终是 null 。
     
     请各位同仁告诉我怎解决,谢谢!!!!!

解决方案 »

  1.   

    充分说明计算机的正确性啊_objWordSheet的document集合当然是空的,数量当然是0因为_objWordSheet这个应用对象没有打开任何文档
    如果你用下面的语句来打开文档那么他的document集合就不是空,文档数量也不是〇
    var doc = objWordSheet.Documents.Open(file);其中file是你要打开的文档的唯一标识如果只是为了关闭打开的文档的话就在catch后面再加一个finally,如下
    finally{
        if(_objWordSheet)
        {
            _objWordSheet.quit(0)
         }}