C#Word互操作访问违反保存时异常
我想写一个程序,它将读取一大堆word 97文件(.doc),并将它们保存为.docx文件。我只能使用.NET2.0 在这个阶段,我只想让它与我的存根代码一起工作-然后我将编写GUI和逻辑来在多个位置打开多个文件,等等 以下是我目前掌握的情况: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
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;