Открытие сохраненной книги приводит к тому, что текущая книга вызывает исключения

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

Кто-нибудь знает, как это исправить? Я делаю что-то не так здесь?

6
задан Kris Harper 23 April 2012 в 17:46
поделиться