現在のブックを参照しながら、保存したExcelブックを開こうとしています。問題は、保存されたワークブックを開くと、元のアクセス権に例外がスローされることです。保存したブックを開くと、現在のブックに例外がスローされます。
ここに示すコードスニペットがあります。私はそれをテストするリボンボタンのイベントハンドラに配置します。
try
{
string workbookPath = @"C:\Temp\Test.xlsx";
Workbook current = Globals.ThisAddIn.Application.ActiveWorkbook;
Workbook newWorkbook = Globals.ThisAddIn.Application.Workbooks.Open(workbookPath);
current.Activate(); // throws an exception
Sheets sheets = current.Worksheets; // throws an exception
string name = current.Name; // throws an exception
}
catch (Exception ex) {}
、デバッグおよびcurrent
、sheets
とname
変数に時計を置く場合は、インスタンス化されるとすぐにnewWorkbook
としてアクセスする場合、他の変数は、例外をスローすることを確認することができます。
スローされます例外は
System.Runtime.InteropServices.COMException was caught
Message=Exception from HRESULT: 0x800401A8
Source=WorkbookTest
ErrorCode=-2147221080
StackTrace:
at Microsoft.Office.Interop.Excel._Workbook.Activate()
at WorkbookTest.Ribbon1.button1_Click(Object sender, RibbonControlEventArgs e) in C:\Temp\WorkbookTest\WorkbookTest\Ribbon1.cs:line 25
InnerException:
ある奇妙なことは、このだけエクセルの新鮮なインスタンス上で起こるということです。 Excelを開いて最初のブックを閉じて新しいブックを開くと、正常に動作します。これが失敗したExcelの新しく開いたインスタンスがある場合のみです。私は本当になぜそれが理解できません。
誰でもこれを解決する方法を知っていますか?私はここで何か間違っていますか?
ActiveWorkbookに設定した後の現在の設定は何ですか? –
@DougGlancy私はあなたが何を意味するか分かりません。これは、アクティブなワークブックに設定されています。デフォルトでは "Book1"です。これはWorkbookオブジェクトです。 –
それは私が言ったことです。あなたがボタンから電話していたので、私はここではそうは考えていませんでしたが、時にはアドインが起動時のアクティブブックです。しかし、ショットに値する。 –