Я пытаюсь открыть сохраненную книгу 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, закрываю первую книгу и открываю новую, все работает нормально.Только если у меня есть недавно открытый экземпляр Excel, это не удается. Я действительно не понимаю, почему это так.
Кто-нибудь знает, как это исправить? Я делаю что-то не так здесь?