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

时间:2013-12-11 08:51:34

标签: c# excel interop comexception

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

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

现在它显示了像

这样的异常
  

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

如何解决这个问题?

13 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:4)

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

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

$word.Visible = $true

MS Word Set default program prompt

点击“是”'并且更新了设置,在我重新运行脚本化的COM交互之后,他们成功了。

答案 3 :(得分:3)

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

答案 4 :(得分:2)

我同意必须激活excel许可证的问题,我遇到了同样的问题,并且激活了许可证,一切正常-Papiki

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

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

奇怪的是,一台电脑需要很长时间才能开始使用excel。停用加载项后,我们的程序运行正常。

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

答案 7 :(得分: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安装无关。

答案 8 :(得分:1)

我也有同样的问题。我在“Windows XP x86”上运行该程序,但它因类似错误而崩溃。问题出在这一行:

sheetSource.Cells(i, iColumn).Interior.Color = RGB(255, 255, 0)

多次执行此行导致崩溃。当我立即删除它时,一切都开始正常工作。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

就我而言,我只是重新启动了计算机,发现有一个Windows更新待处理。重新启动机器解决了我的问题。

答案 11 :(得分:0)

除了上述解决方案之外,我还可以提供另一件值得关注的解决方案,这些解决方案似乎都集中在此评论上(由Alielson Piffer回答),

SUMMARY: So by the answers here we could conclude that this error may occur when Excel is showing any message in a popup window like for example "This software is not activated" or "Do you want Excel to be the default application for DOCX files?". – Elmue Jun 12 '17 at 22:43

没有打开的消息框或提示,但是任务管理器中有一个需要结束的无休止进程(在我的情况下为Word.exe)。这样就解决了。

这可以解释为什么重新启动可以帮助另一个用户。

答案 12 :(得分:0)

确保您检查Office安装以确保它们已完成。

否则请尝试

尝试App可见性为false 写完所有数据之后 打开可见性 前 昏暗的wapp作为新的excel.Application .... 。 。 wapp.Visible = false

做你的写作 .. 。 。 。

'然后打开可见性

wapp.Visible = True