我在Visual Studio 2008中遇到C#ASP .NET项目的问题当我使用Windows 7 Ultimate(x64)重新安装我的计算机时,问题就出现了.对此我也使用Office 2007.
我得到的错误信息是:
System.UnauthorizedAccessException:检索具有CLSID {000209FF-0000-0000-C000-000000000046}的组件的COM类工厂因以下错误而失败:80070005.at xxx.Utility.WordDocument..ctor(String filePath,HttpServerUtility util)at customer_communication.BuCreate_click(Object sender,EventArgs e)位于c:\ xxx\Website\customer\communication.aspx.cs:第127行
我在 Word VSTO 加载项项目中有这样一行代码,它曾经可以工作,但突然不再工作了:
Microsoft.Office.Interop.Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
Run Code Online (Sandbox Code Playgroud)
在它按预期返回Document对象之前,我可以毫无问题地读取和操作它。但现在它抛出System.Runtime.InteropServices.COMException异常。“Word遇到了问题。” 很有帮助。该异常包含 0x800A13E9 的 HRESULT,到目前为止这也没有帮助我。内存不足还是怎么的?我不知道。
新行为似乎是在除夕夜左右开始的(不确定,因为过去几周我没有使用该加载项),并且它是在安装加载项时开始的,即代码中没有任何更改,重新编译或重新安装以使其发生。此后我重建了该项目,认为证书可能已过期或其他原因,但错误仍然发生。
也许值得注意的是,我仍然可以访问应用程序实例的其他属性。例如,这一行不会抛出异常:
int numDocuments = Globals.ThisAddIn.Application.Documents.Count;
Run Code Online (Sandbox Code Playgroud)
但是当我使用 迭代集合时Documents,foreach它只是跳过循环,就好像计数为零一样。
我唯一能想到的是 Office (365) 的更新破坏了与 VSTO 相关的某些内容。但我从哪里开始调试呢?
好的,所以我尝试创建一个新的 Word VSTO 加载项,不更改任何默认项目属性,而是添加带有单个按钮的单个功能区和以下方法:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
try
{
var x = Globals.ThisAddIn.Application.ActiveDocument;
}
catch (Exception ex)
{
;
}
}
Run Code Online (Sandbox Code Playgroud)
它在获取 ActiveDocument 属性时抛出完全相同的异常。不过,我确实注意到,加载加载项时还会抛出两个异常,加载原始加载项时也会抛出这些异常(以前工作正常):
Exception thrown: 'System.Deployment.Application.DeploymentException' in System.Deployment.dll
Exception thrown: 'System.Security.Cryptography.CryptographicException' in Microsoft.VisualStudio.Tools.Applications.Hosting.dll
Run Code Online (Sandbox Code Playgroud)
它们不会阻止加载项加载和运行,但也许它们与问题有关?不知道去年问题出现之前是否也被抛出过。
不过,我确实有几个 Excel 加载项,它们仍然可以在相同版本的 VSTO、Visual …
请问有人可以帮助解决使用代码打开 Word2003 文件的问题吗Microsoft.Office.Interop.Word?
我的代码如下。该文档创建得很好,如果我在创建后暂停代码,我可以通过资源管理器打开该文件。代码冻结在最后一行。此时,我们可以看到文件锁定图元文件和原始文件一样出现在资源管理器中。我看不到生成任何错误。也许有一个看不见的对话框,但除此之外我很困惑。提前致谢。
首先将字节数组写入文件
var tmpFile = @"C:\donkey.doc";
File.WriteAllBytes(tmpFile, binary_document);
Run Code Online (Sandbox Code Playgroud)将文件作为某种类型的文档对象打开
Application app = new Application();
Document CurrDoc = app.Documents.Open(@"C:\donkey.doc");
Run Code Online (Sandbox Code Playgroud)冻结的解决方案是重新安装 Word2003,尽管由于此处确定的服务器问题,我实际上已经完全放弃了该方法http://support.microsoft.com/kb/257757。感谢您的所有帮助。