how to solve Exception:Call was rejected by callee. (Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)) in C#?
I ran into this same error being thrown when I deployed my application onto a machine without a fully activated and licensed installation of Excel. I spent hours trying to diagnose the issue. Make sure you check your Office installations to make sure they are complete.
I solved this behaviour with the help of this question:
Strange behaviour of "Call was rejected by callee." exception with Excel
The issue was simply that the Workbook.Open
hadn't finished when I gave a Worksheet.SaveAs
command. So sometimes, the script would work, sometimes not.
I simply added a pause in the script after Workbook.Open
and it worked. I went on to find a property Ready
, which allowed me to do exactly what I wanted:
$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)
So in my case, it had nothing to do with non-activated or corrupted Excel installations.
Ensure that MS Word/Excel is not showing a dialog box that needs a response.
I set a breakpoint on the line that caused the failure, then set .Visible
to true in PowerShell, to find this:
$word.Visible = $true
After I clicked 'Yes' and updated the settings, after I re-ran my scripted COM interactions, they succeeded.