vb.net - SaveAs2 For Word 2010 无法与装有 Word 2007 的客户端 PC 配合使用

标签 vb.net visual-studio-2010 ms-word ms-office

我用VB.Net(VS2010)开发了一个WinForm应用程序,安装了Office 2010 Professional,它是64位Windows 7平台。该程序打开 .doc 和 .rtf 格式文档,并尝试将其保存为 htm 格式。我正在使用以下命令:

将 sFilePath 变暗为 String = "C:\ABC\file.doc"

        Dim oApp As New Microsoft.Office.Interop.Word.Application
        Dim oDoc As New Microsoft.Office.Interop.Word.Document
        Dim sTempFileName As String = System.IO.Path.GetTempFileName()
        oDoc = oApp.Documents.Open(sFilePath)
        oApp.Visible = False
        oDoc = oApp.ActiveDocument
        oDoc.SaveAs2(sTempFileName, FileFormat:=WdSaveFormat.wdFormatHTML,CompatibilityMode:=Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2007)
        oDoc.Close()
        oApp.Quit()
        oDoc = Nothing
        oApp = Nothing

在开发 PC 上进行开发和运行一切顺利,但是当我将其发布以进行脱机安装,并将其部署到具有 Windows XP 和 Office 2007 的客户端 PC 上时,它在 oDoc.SaveAs2 行上出现错误,并且程序崩溃。我已经用谷歌搜索了足够多的内容,但找不到解决方案。有人请尽快帮助我

最佳答案

From MSDN

另存为2
此方法出现在面向 .NET Framework 4 的 Word 2007 项目的 IntelliSense 中。但是,此属性不能在 Word 2007 项目中使用

顺便说一句,如果您在此网站上搜索,您会找到针对您的问题的响应 here

您可以使用以下代码检查用户 PC 上当前安装的 Word 版本:

string v = _myWordApp.Version;
switch(v)
{
    case "7.0":
    case "8.0":
    case "9.0":
    case "10.0":
    _myWordDoc.SaveAs2000(ref _documentFile, ref _nothing, ref _nothing, ref _nothing, 
        ref _nothing, ref _nothing, ref _nothing, ref _nothing, 
        ref _nothing, ref _nothing, ref _nothing);
      break; 
    case "11.0":
    case "12.0"
    _myWordDoc.SaveAs(ref _documentFile, ref _nothing, ref _nothing, ref _nothing, 
        ref _nothing, ref _nothing, ref _nothing, ref _nothing, 
        ref _nothing, ref _nothing, ref _nothing, ref _nothing,
        ref _nothing, ref _nothing, ref _nothing, ref _nothing);
    case "14.0"
    _myWordDoc.SaveAs2(ref _documentFile, ref WdSaveFormat.wdFormatHTML, 
                ref _nothing, ref _nothing, ref _nothing, 
        ref _nothing, ref _nothing, ref _nothing, ref _nothing, 
        ref _nothing, ref _nothing, ref _nothing, ref _nothing,
        ref _nothing, ref _nothing, ref _nothing, 
                ref Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2007);
      break;
    default:
      errorText = "Not able to get Word Version"
      break;
} 

抱歉使用 C# 代码,但它很容易翻译。

关于vb.net - SaveAs2 For Word 2010 无法与装有 Word 2007 的客户端 PC 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9915617/

相关文章:

.net - 分配给 Excel.Application.ActivePrinter 时出现 COMException

c# - 如何忽略二进制序列化的事件类成员?

c# - 为什么我的机器需要完全重置 IIS 才能看到 ASP.NET 项目的代码更改?

excel - 如何使用 Excel VBA 在 Word 中查找和替换文本?

c# - 如何判断 OpenXML 中段落的高度?

.net - 检查图片框图像的索引

c# - 为什么这段代码总是得到 SynchronizationLockException?

visual-studio-2010 - 调试 SharePoint 2010 Web 部件时出现问题

c++ - 如何在 Windows 上构建 LuaPlus

android - 是否可以将 .doc 转换为 Spannables