Windows 7 .net Excel .SaveAs()来自HRESULT的错误异常:0x800A03EC

Jef*_*nke 13 .net excel windows-7

背景:
我在工作中敬酒我的旧硬盘并且正在换新的硬盘.有了它,我将不得不重建我的机器.我的经理在他的借用笔记本电脑上安装了Windows 7,我一直在使用我的机器没有通信.但我遇到了一个问题.

我们有相当多的应用程序使用Microsoft.Office.Interop.Excel参考.我已经得到了过去的一些错误,但迄今为止我一直停留在过去几天的一个(我的机子居然遭遇了硬盘驱动器故障后的第一个重建),并已unnable以找到一个解决.我已经搜索过此错误,但在Windows 7上找不到任何有此问题的人,尽管我尝试过其他Windows Server 2008修复程序无济于事.

如果我无法解决这个问题,我将无法使用Windows 7并且想知道在重建机器之前只需擦除它并重新开始(第三次).

问题:
操作系统:Windows 7企业版
错误消息:HRESULT异常:0x800A03EC
代码:

Private m_xls As Microsoft.Office.Interop.Excel.Application
Private m_wkbk As Microsoft.Office.Interop.Excel.Workbook
Private m_wksht As Microsoft.Office.Interop.Excel.Worksheet
m_xls = New Application
m_xls.Visible = False : m_xls.DisplayAlerts = False
m_wkbk = m_xls.Workbooks.Open(Me.FilePath)
m_wksht = CType(m_wkbk.ActiveSheet, Worksheet)
'...Write some data...'
m_wkbk.SaveAs(Me.FilePath, XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, False, False, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value)
Run Code Online (Sandbox Code Playgroud)

错误发生在最后一行.

到目前为止我尝试过的:

  1. 更改AppPool以使用NetworkService帐户(这是我在安全设置中的用户列表中找不到的'ApplicationPoolIdentity').然后授予NetworkService帐户对相应文件夹的完全访问权限.
  2. 使NetworkService可以访问DCOMCNFG中的所有"Microsoft Excel应用程序"设置
  3. 运行此命令"appcmd set config -section:asp -enableParentPaths:true"因为它是我能找到的唯一的其他东西
  4. 使用.SaveCopyAs()虽然有效但导致了不同的错误

我只是想知道是否有其他人遇到过此问题,因为Windows 7是新的.我可以使用Server 2008,但在我告诉我的经理它不起作用之前我想有一些可靠的推理.

谢谢杰夫

Jef*_*nke 17

注意:这需要精简一点,因为它是我在内部维基上所做的所有修复的汇编,但我不确定哪些更改子集使其工作,所以我将包括它.

解:

以下更改可能是如何解决此问题的超集.

- 运行DCOMCNFG.exe并导航到"组件服务>计算机>我的电脑".
- 右键单击​​"我的电脑",然后单击"属性".
- 打开"COM安全"选项卡.为列出的每个按钮添加您的帐户("编辑限制..."和"编辑默认..."按钮在"访问权限"和"启动并激活权限"下).为您的帐户提供所有访问选项.单击"应用",然后单击"确定".
- 仍然在DCOMCNFG中展开"我的电脑"链接并打开"DCOM Config"文件夹.
- 右键单击​​"Microsoft Excel Application"并选择"属性".
- 在"安全"选项卡下,选择"启动和激活权限"和"配置权限"的"自定义"选项.两者都单击"编辑..."按钮.让您的帐户访问所有内容.
- 仍然在"Microsoft Excel应用程序"的"属性"中,转到"身份"选项卡.
- 选择"交互式用户"选项.
- 点击"应用",然后"确定".
-重启你的电脑.

- 尝试以下DCOMCNFG和ApplicationPoolIdentity更改.

- 以管理员身份运行命令提示符.
- 导航到c:\ Windows\System32\inetsrv>并运行'appcmd set config -section:asp -enableParentPaths:true'

或者你可以使用.SaveCopyAs(),虽然这可能仍然无法解决问题并需要更改代码.

DCOMCNFG对于Windows 7:

"Excel app = New Application();"上发生此错误 电话

此链接详细说明了如何解决XP/Server 2003的问题,但可以适用于Windows 7:http://blog.crowe.co.nz/archive/2006/03/02/589.aspx

我没有/找不到'ASPNET'帐户.您必须检查应用程序池以找出应用程序正在运行的内容.
为此,请进入"计算机管理>服务和应用程序> Internet信息服务>应用程序池"
右键单击相应的AppPool,然后选择"高级设置".在"流程模型>身份"下,您可以找到正在运行的帐户.我是'ApplicationPoolIdentity',我也找不到,所以我把它改成了'网络服务',就像Windows Server 2003一样.
一旦设置完就运行DCOMCNFG.exe.导航到"组件服务>计算机>我的电脑> DCOM配置".
找到并右键单击"Microsoft Excel Application"并选择"属性".选择"安全"标签.在"启动和激活权限"下,选择"自定义",然后点击"修改".
然后单击"添加..."按钮.
输入相应帐户的名称,在本例中为"网络服务",然后单击"检查名称".然后单击"确定".
返回"启动和激活权限"页面,突出显示"网络服务"帐户,然后选中"本地启动"和"本地激活"复选框.然后单击"确定".

  • 对于Windows 7 64位,使用以下命令以32位模式启动DCOMCNFG:DCOMCNFG -32否则,您将无法在列表中看到Microsoft Excel Application. (8认同)