コンソールアプリケーションでC#コードを記述して、2つのExcelを開き、1つの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での「呼び出しが呼び出し先によって拒否されました」例外の奇妙な動作
問題は、単に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 2016でこのエラーが発生しました。
この問題が発生したコンピューターでは、いくつかのアドインがアクティブになっていることがわかりました。
奇妙なことに、1台のPCがExcelを起動するのに時間がかかりました。アドインを無効にした後、プログラムは正常に機能しました。
奇妙なことに、開発用PCでこれを再現できませんでした。
あるドキュメントから別のドキュメントにさまざまな情報をコピーしていますか、またはセルごとにコピーする2つのドキュメント間を行き来していますか? Excelはシングルスレッドであるため、前後に移動するとこの問題が発生する可能性があります。
私のマシンでこの問題に遭遇しました。 Excelは完全にアクティブ化され、すでに.xlsxファイルのデフォルトプログラムです。ピボットテーブルで作成したワークブックテンプレートをロードし、スクリプトでテーブルのデータを更新していました。ピボットテーブルが[ピボットテーブルオプション]> [データ]で[ファイルを開くときにデータを更新する]に設定されている場合、何らかのスレッド競合の問題が発生します。
開くときに更新を無効にすると、問題が解決しました。
私の場合、単純にマシンを再起動すると、Windowsの更新が保留されていることがわかりました。マシンを再起動すると問題が解決しました。