Para ocultar el editor visual básico (que muestra cuando se produce un error) antes de intentar abrir el archivo, cambie Excel.VBE.MainWindow.Visible por falso. Tenga en cuenta que si no se muestra el depurador, deberá capturar una excepción en su código, por lo tanto, envuelva su código con una captura de prueba.
Si no se necesitan macros y se pueden ignorar, use msoAutomationFieldDisable para deshabilitarlos por completo.
using InteropExcel = Microsoft.Office.Interop.Excel;
var Excel = new InteropExcel.Application();
// Excel window will NOT popup if macro errors are found but
// exceptions might be raised when you execute the broken
// macro.
Excel.VBE.MainWindow.Visible = false;
// Uncomment to disable macros completely.
// Excel.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;
// I used this snippet to open a file with a broken macro.
var MyWorkbook = Excel.Workbooks.Open (@"YourFilePath");
var FirstWorksheet = (InteropExcel.Worksheet)MyWorkbook.Worksheets ["Plan1"];
var MyCell = ((InteropExcel.Range)FirstWorksheet.Cells [1,1]);
var CellValue = (Int32)MyCell.Value;
OP, ¿ha encontrado una solución allí? – Jerome
¿Puede proporcionar una hoja de cálculo de muestra que arroje errores y el código que está utilizando para leer los valores? – Lumigraphics
No creo que eso ayude. Supongamos, por ejemplo, llamar a una simple macro Prueba1, con una sola instrucción, pasando un doble a una función esperando una cadena. Eso arrojaría un error de desajuste de tipo en el tiempo de ejecución, produciendo la ejecución de interrupción emergente antes mencionada. – Jerome