如题。我在vb6程序中生成了word文件,但是打开时提示“Micsoft office word 需要转换器以正确显示该文件”,每次生成的word文件都会这样,我安装的时office2003.
但是用vb生成excel文件,打开时就不会出现此提示。就算先生成txt文件,然后重命名为word文件,打开此word文件时,还是会出现上述提示?请问是怎么回事?
我是从硬盘安装的office,没有office安装盘,就算安装也找不到想要的.msi文件啊。不安装也到能正常显示word文件,如果是刚生成的word文件,关闭word还是要求保存,并且关机时还是会提示。
不知道是不是vb生成的word时的原因?
我用两种方法生成的word都有这种情况,生成word的代码如下:
1.通过dialog生成保存word。
    '导出结果
    
    On Error GoTo errCode
    
    CommonDialog1.DialogTitle = "导出统计结果"
    CommonDialog1.FileName = Trim(comPatientId.Text)       '默认文件名
    CommonDialog1.Filter = "word文件(*.doc)    (可选择其他文件格式;或直接输入任意文件格式后缀)|*.doc|Excel文件(*.xls)|*.xls|文本文件(*.txt)|*.txt"
    CommonDialog1.ShowSave    Dim mfile As String
    mfile = CommonDialog1.FileName                    '得到目标文件的路径
    
    If Trim(mfile) = "" Then
        Exit Sub
    End If
    
    If Dir(mfile) <> "" Then
        If MsgBox(Dir(mfile) & " 文件已经存在,是否替换?", vbYesNo + vbQuestion + vbDefaultButton2, "警告") = vbNo Then
            Exit Sub
        End If
    End If
    
    Open mfile For Output As #1    Print #1, "患者治疗次数"
    Print #1,   '换行
    Print #1, "患者编号:"; comPatientId.Text
    Print #1, "姓    名:"; comPatientName.Text
    Print #1, "总次数:"; txtTotal.Text
    Print #1, "每月治疗次数:"
    For i = 0 To List1.ListCount - 1
        Print #1, List1.List(i);                     '后面加上分号或逗号,就不会多一个空行
    Next    Close #1            '关闭文件
    
2.直接创建word应用程序
    Dim wordAPP As Object, myWord As Object
      
    '获取应用程序所在目录,生成Word对象,并打开相对路径的文档模板
    Set wordAPP = CreateObject("Word.Application")
    Set myWord = wordAPP.Documents.Open(App.Path & "\printfile\patientInfo.doc")
        
    '打开word文档,用于向word输出患者信息
    Open App.Path & "\printfile\patientInfo.doc" For Output As #1

解决方案 »

  1.   

    在vb中有解决办法吗?
    怎么样才能生成不出现这种提示的word文件?
      

  2.   

    .doc 明明是二进制文件,什么时候看到过有文本格式的。
    天方夜谭
      

  3.   

    第一段代码中是说用户可以选择生成.txt格式的文本文件,不一定非生成word文件。
    另外,我就是想知道怎么在vb中解决生成word文件后,打开时不出现上面的提示。
    就和其他word文件一样正常打开。
    谢谢。
      

  4.   

    http://topic.csdn.net/t/20030320/09/1552969.html
      

  5.   

    谢谢。
    还是不行,试验了一下那个网址的代码,还是不行。
    关闭word时,弹出如下提示:
      

  6.   

    按照msdn的以下说法,删除normal.doc也不行,删除后再此打开word后又生成了这个文件。http://support.microsoft.com/kb/275955/zh-cn~$Normal.dot 模板文件没有自动删除
    察看本文应用于的产品
    文章编号 : 275955 
    最后修改 : 2006年3月31日 
    修订 : 3.1 
    症状
    当您查看包含 Microsoft Word 模板的文件夹的内容时,将显示通用模板的自动保存副本 ~$Normal.dot,即使您启动了 Word 然后正常退出该程序也是如此。 
    回到顶端原因
    如果您对 Normal.dot 模板进行了更改并且 Word 异常退出,可能会出现此现象。自动保存文件在文档所有者(创建该自动保存文件的程序)打开文件然后正常关闭后通常会被删除,但是通用模板自动保存文件不会被删除。 
    回到顶端解决方案
    要解决此问题,请手动删除自动保存文件。要删除文件 ~$Normal.dot,请按照下列步骤操作: 1. 启动 Microsoft Windows 资源管理器。 
    2. 浏览以查找 ~$Normal.dot。它通常位于默认的 Word 模板文件夹中:磁盘:\Documents and Settings\计算机名称\Application Data\Microsoft\Templates 
    3. 右键单击 ~$Normal.dot。 
    4. 在快捷菜单上,单击删除。 
    5. 当确认消息出现时,请单击是。 回到顶端状态
    Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中存在的问题。
    回到顶端
      

  7.   

    通过 Word.Application 操作和通过其它方式操着文件不能同时进行。
      

  8.   

    嗯。明白了,就是我必须退出Word.Application 操作后,才能再通过其他方式打开同一个word文件。
    但是,打开word时提示“Micsoft office word 需要转换器以正确显示该文件”,还是没有解决?
    请问该怎么办?
      

  9.   

    文件格式不对,可能错误的地方正好是标记内容格式的,让 Word 认为没有对应的转换器用来解析文件。
    应该只用 Word.Application 操作。
      

  10.   

    谢谢您的帮助。
    搞不明白到底是怎么回事。
    我在xp下重装过office2003,结果还是一样的问题。
    我还是装office2007试试看,看那样还有没有这个问题。
      

  11.   

    问题概括来说,分以下两种情况:
    1.使用CommonDialog方式保存的word文件换成office2007后,打开文件时提示变成了选择一个编码方式,默认设置在gb2312上。
    那就是说我需要设置一个编码方式,
        CommonDialog1.FontName = "宋体"
        CommonDialog1.FontSize = 12
    如上可以设置字体,但不起作用,字体大小也不起作用。这样生成的word文件打开时还是会提示选择编码方式。
    请问需要怎么设置编码方式呢?2.用Set wordAPP = CreateObject("Word.Application")方式生成的word
    此种方式生成的word文件打开时不会出现提示选择编码方式,但是在关闭时会出现如下提示:
    就算关闭vb程序后,再打开word文件关闭时也会出现这个提示。
    请问各位,以上两种方法该怎么解决?多谢了!
      

  12.   

    红叉,再发。
    2.用Set wordAPP = CreateObject("Word.Application")方式生成的word 
    此种方式生成的word文件打开时不会出现提示选择编码方式,但是在关闭时会出现如下提示: 
     就算关闭vb程序后,再打开word文件关闭时也会出现这个提示。 
    请问各位,以上两种方法该怎么解决?多谢了!
      

  13.   

    .dot 是模板文件,按照模块新建文件应该用 Add() 而不是 Open()。又:不知道你所谓的“使用CommonDialog方式保存的word文件”是什么意思?
    CommonDialog只是由用户交互输入一个用来保存的文件名,具体保存还是由你的代码完成的。
    不知道你怎么做的?
    难道是按照doc的数据格式直接生成的?那么只能说生成的格式不完整。
      

  14.   

    多谢!
    1. 我试过一个add()的例子,在不设置visible = true,即不显示这个生成的word文件的时候,就完全正常。那就是我在生成这个文件后,在显示之前需要先结束此word应用程序,然后再打开,就不会出现关闭时此文件再使用的提示了。2.CommonDialog只是由用户交互输入一个用来保存的文件名,具体保存还是由你的代码完成的。 
    不知道你怎么做的? 
    难道是按照doc的数据格式直接生成的?那么只能说生成的格式不完整。
    :应该是你说的这样才完整,我就是直接按照.doc保存的,没有设置其他的,所以才会在打开这个文件时提示选择编码。
    你这么一说我就想起来在备份access数据库时也是使用的CommonDialog选择保存路径和文件名,但那时就对数据库文件进行了代码处理,先读文件,在保存文件,那样才对。
      

  15.   

    说明你没有正确关闭Word文档。
    应该先保存文档,再关闭文档,最后关闭Word程序。
      

  16.   

    谢谢。
    关闭文档用Close,最后关闭Word程序用Quit就可以了吧?
      

  17.   

    用 Excel 时有没有完全释放就看进程用 Excel.exe 是否存在。
    Word 也应该一样。
      

  18.   

    多谢!
    麻烦再问一下,我用CommonDialog另存为word文件,我的代码处理如下,哪么还需要做哪些设置才行,怎么设置编码为gb2312?
    多谢了,我不一点都不知道该怎么做了。
        Dim i As Integer
        
        'µ¼³ö½á¹û
        
        On Error GoTo errCode
        
        CommonDialog1.CancelError = True
        CommonDialog1.DialogTitle = "µ¼³öͳ¼Æ½á¹û"
        CommonDialog1.FileName = Trim(comPatientId.Text)       'ĬÈÏÎļþÃû
        CommonDialog1.FontName = "ËÎÌå"
        CommonDialog1.FontSize = 22
        CommonDialog1.Filter = "wordÎļþ(*.doc)    (¿ÉÑ¡ÔñÆäËûÎļþ¸ñʽ£»»òÖ±½ÓÊäÈëÈÎÒâÎļþ¸ñʽºó׺)|*.doc|ExcelÎļþ(*.xls)|*.xls|Îı¾Îļþ(*.txt)|*.txt"
        CommonDialog1.ShowSave    Dim mfile As String
        mfile = CommonDialog1.FileName                    'µÃµ½Ä¿±êÎļþµÄ·¾¶
        
        If Trim(mfile) = "" Then
            Exit Sub
        End If
        
        If Dir(mfile) <> "" Then
            If MsgBox(Dir(mfile) & " ÎļþÒѾ­´æÔÚ£¬ÊÇ·ñÌæ»»£¿", vbYesNo + vbQuestion + vbDefaultButton2, "¾¯¸æ") = vbNo Then
                Exit Sub
            End If
        End If
        
        Open mfile For Output As #1    Print #1, "»¼ÕßÖÎÁÆ´ÎÊý"
        Print #1,   '»»ÐÐ
        Print #1, "»¼Õß±àºÅ£º"; comPatientId.Text
        Print #1, "ÐÕ    Ãû£º"; comPatientName.Text
        Print #1, "×Ü´ÎÊý£º"; txtTotal.Text
        Print #1, "ÿÔÂÖÎÁÆ´ÎÊý£º"
        For i = 0 To List1.ListCount - 1
            Print #1, List1.List(i);                     'ºóÃæ¼ÓÉϷֺŻò¶ººÅ£¬¾Í²»»á¶àÒ»¸ö¿ÕÐÐ
        Next    Close #1            '¹Ø±ÕÎļþ
        
        MsgBox "µ¼³ö³É¹¦£¡", vbOKOnly + vbInformation, "Ìáʾ"
        
        Exit Sub
        
    errCode:
        If Err.Number = cdlCancel Then            'Ñ¡ÔñÁË¡°È¡Ïû¡±
            Exit Sub
        End If
      

  19.   

    早就说过了,Print # 语句输出的根本不是 Word 文件,光有文件后缀是不行的。
    难道随便新建一个文本文件,然后后缀改成 .mp3 就能放音乐了?
    莫名其妙的逻辑。
      

  20.   

    谢谢!
    主要是我不知道该从哪里下手。
    是不是我根据CommonDialog返回用户选择的文件类型,再对不同的类型(word, excel, txt)分别处理,生成对应类型的文件就可以了?