Estoy intentando abrir un libro de Excel guardado mientras mantengo una referencia al libro actual. El problema es que tan pronto como abro el libro de trabajo guardado, el original arroja una excepción al acceder.Al abrir un libro guardado, el libro actual arroja excepciones
Aquí hay un fragmento de código para demostrar. Puse esto en un controlador de eventos para un botón de cinta para probarlo.
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) {}
Si se depura y poner los relojes en current
, sheets
y name
las variables se puede ver que en cuanto newWorkbook
se instancia, las otras variables producen excepciones cuando se tiene acceso.
La excepción que se lanza es
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:
Lo más extraño es que este única sucede en una instancia nueva de Excel. Si abro Excel, cierro el primer libro y abro uno nuevo, funciona bien. Es solo si tengo una instancia de Excel recién abierta que esto falla. Realmente no entiendo por qué es eso.
¿Alguien sabe cómo solucionar esto? ¿Estoy haciendo algo mal aquí?
¿Qué está configurado actualmente después de configurarlo en ActiveWorkbook? –
@DougGlancy No estoy seguro de lo que quieres decir. Está establecido en el libro de trabajo activo. "Book1" por defecto. Es un objeto Libro de trabajo. –
Eso es lo que quise decir. A veces, el complemento es el libro activo justo cuando comienza, aunque no pensé que fuera así, ya que llamabas desde un botón. Vale la pena intentarlo. –