如何解决异常:调用被被调用者拒绝。 (C#中的HRESULT异常:0x80010001(RPC_E_CALL_REJECTED))?

问题描述 投票:12回答:9

我在控制台应用程序中编写了一个C#代码来打开两个excel,并将数据从一个excel复制并粘贴到另一个excel。它工作正常,直到目标excel的可见性为真。但是我需要在执行时隐藏excel。所以我将可见性改为false。喜欢,

  _destExcelApp = new Excel.ApplicationClass();
  _destExcelApp.Visible = false;

现在它显示了一个例外

呼叫被被叫方拒绝了。 (来自HRESULT的异常:0x80010001(RPC_E_CALL_REJECTED))

怎么解决这个?

c# excel interop comexception
9个回答
19
投票

当我将应用程序部署到没有完全激活和许可的Excel安装的计算机上时,我遇到了同样的错误。我花了好几个小时试图诊断问题。确保检查Office安装以确保它们完整。


5
投票

我遇到了同样的错误,并且建议的许多解决方案对我不起作用。我有一个在Windows 8中运行的应用程序,我发现问题是Excel总是要求为“xlsx”扩展选择默认应用程序。执行应用程序时,没有出现窗口对话框,只显示错误。

我解决了问题转到控制面板>程序>默认程序并将Microsoft Office Excel 2016设置为xlsx文件的默认程序。


4
投票

确保MS Word / Excel未显示需要响应的对话框。

我在导致失败的行上设置断点,然后在PowerShell中将.Visible设置为true,以找到:

$word.Visible = $true

MS Word Set default program prompt

单击“是”并更新设置后,在重新运行脚本化COM交互后,它们成功完成。


3
投票

我用Word遇到了这个问题,我的解决方案是卸载OpenOffice。我不确定是否有另一种解决方案,但很可能与dll有关,并且与您以编程方式生成的特定文件的默认文件处理程序发生冲突。


1
投票

您是在将一系列信息从一个文档复制到另一个文档,还是在两个文件之间来回移动? Excel是单线程的,所以如果你来回走动,可能会导致这个问题。


1
投票

我今天在Excel 2016中遇到此错误。

我们发现有这个问题的计算机激活了一些加载项。

奇怪的是,一台电脑花了很长时间才开始擅长。停用加载项后,我们的程序运行正常。

奇怪的是,我们无法在我们的开发电脑上重现这一点。


1
投票

我借助这个问题解决了这个问题:

Strange behaviour of "Call was rejected by callee." exception with Excel

问题只是当我给出Workbook.Open命令时Worksheet.SaveAs没有完成。所以有时,脚本会工作,有时候不会。

我只是在Workbook.Open之后在脚本中添加了一个停顿并且它有效。我继续找到一个属性Ready,这让我可以完全按照自己的意愿行事:

    $excel = New-Object -ComObject "Excel.Application" -ea Stop
    $wb = $excel.Workbooks.Open($workbook)
    $sheet = $wb.Sheets("List")
    while (-not $excel.Ready) {
        sleep 1
    }
    $sheet.SaveAs($csvpath,6)

所以在我的情况下,它与未激活或损坏的Excel安装无关。


0
投票

在我的机器上遇到这个问题。 Excel已完全激活,并且已经是.xlsx文件的默认程序。我正在加载我使用数据透视表创建的工作簿模板,并使用脚本更新表中的数据。事实证明,如果在数据透视表选项>数据下将数据透视表设置为“在打开文件时刷新数据”,则会导致某种线程争用问题。 禁用打开时刷新解决了这个问题。


0
投票

在我的情况下,我只是重新启动我的机器,发现有一个Windows更新挂起。重启机器解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.