C#Word互操作访问违反保存时异常

C#Word互操作访问违反保存时异常,c#,ms-word,office-interop,C#,Ms Word,Office Interop,我想写一个程序,它将读取一大堆word 97文件(.doc),并将它们保存为.docx文件。我只能使用.NET2.0 在这个阶段,我只想让它与我的存根代码一起工作-然后我将编写GUI和逻辑来在多个位置打开多个文件,等等 以下是我目前掌握的情况: using MSWord = Microsoft.Office.Interop.Word; using MSPPoint = Microsoft.Office.Interop.PowerPoint; 然后 据我所知,word文档正在打开。 但是,S

我想写一个程序,它将读取一大堆word 97文件(.doc),并将它们保存为.docx文件。我只能使用.NET2.0

在这个阶段,我只想让它与我的存根代码一起工作-然后我将编写GUI和逻辑来在多个位置打开多个文件,等等

以下是我目前掌握的情况:

using MSWord   = Microsoft.Office.Interop.Word;
using MSPPoint = Microsoft.Office.Interop.PowerPoint;
然后

据我所知,word文档正在打开。 但是,
SaveAs2()
命令似乎会抛出一个
AccessViolationException
,并且.docx不会被保存

有人能告诉我上面的代码有什么问题,为什么不保存,以及如何修复吗


谢谢

你被困在地狱里了。仅当计算机上安装了Office 2010时才使用SaveAs2()。任何以前的版本都会使用AccessViolation进行轰炸,该方法没有实现。使用正确的PIA版本也会有很大的帮助。为了避免这个问题,请确保使用您愿意支持的最低版本


使用SaveAs()方法。

发布确切的异常(包括详细信息)如何?谢谢<代码>另存为()在互操作库的版本14中不可用,但在版本12中可用。奇怪的是,它在PowerPoint interop的第14版中可用。此后,我按照您的建议使用
SaveAs()
对其进行了修复,效果非常好。:)
OpenFileDialog ofd = new OpenFileDialog()
{
  CheckFileExists = true,
};

if (ofd.ShowDialog() != DialogResult.OK)
  return;

MSWord.Application app = new MSWord.Application();
MSWord.Document    doc = new MSWord.Document();

doc = app.Documents.Open(ofd.FileName);

try
{
  doc.SaveAs2(ofd.FileName + ".docx", MSWord.WdSaveFormat.wdFormatDocument);
}
catch (Exception ex)
{
  MessageBox.Show("Could not save because:\r\n" + ex.Message,
    ex.GetType().ToString());
}

doc.Close();
app.Quit();

return;