我在控制台应用程序中编写了一个C#代码来打开两个excel,并将数据从一个excel复制并粘贴到另一个excel。它工作正常,直到目标excel的可见性为真。但是我需要在执行时隐藏excel。所以我将可见性改为false。喜欢,
_destExcelApp = new Excel.ApplicationClass();
_destExcelApp.Visible = false;
现在它显示了一个例外
呼叫被被叫方拒绝了。 (来自HRESULT的异常:0x80010001(RPC_E_CALL_REJECTED))
怎么解决这个?
当我将应用程序部署到没有完全激活和许可的Excel安装的计算机上时,我遇到了同样的错误。我花了好几个小时试图诊断问题。确保检查Office安装以确保它们完整。
我遇到了同样的错误,并且建议的许多解决方案对我不起作用。我有一个在Windows 8中运行的应用程序,我发现问题是Excel总是要求为“xlsx”扩展选择默认应用程序。执行应用程序时,没有出现窗口对话框,只显示错误。
我解决了问题转到控制面板>程序>默认程序并将Microsoft Office Excel 2016设置为xlsx文件的默认程序。
我用Word遇到了这个问题,我的解决方案是卸载OpenOffice。我不确定是否有另一种解决方案,但很可能与dll有关,并且与您以编程方式生成的特定文件的默认文件处理程序发生冲突。
您是在将一系列信息从一个文档复制到另一个文档,还是在两个文件之间来回移动? Excel是单线程的,所以如果你来回走动,可能会导致这个问题。
我今天在Excel 2016中遇到此错误。
我们发现有这个问题的计算机激活了一些加载项。
奇怪的是,一台电脑花了很长时间才开始擅长。停用加载项后,我们的程序运行正常。
奇怪的是,我们无法在我们的开发电脑上重现这一点。
我借助这个问题解决了这个问题:
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安装无关。
在我的机器上遇到这个问题。 Excel已完全激活,并且已经是.xlsx文件的默认程序。我正在加载我使用数据透视表创建的工作簿模板,并使用脚本更新表中的数据。事实证明,如果在数据透视表选项>数据下将数据透视表设置为“在打开文件时刷新数据”,则会导致某种线程争用问题。 禁用打开时刷新解决了这个问题。
在我的情况下,我只是重新启动我的机器,发现有一个Windows更新挂起。重启机器解决了我的问题。