Aby ukryć wizualny edytor podstawowy (który pokazuje, kiedy wystąpi błąd) przed próbą otwarcia pliku, zmień wartość Excel.VBE.MainWindow.Visible na wartość false. Pamiętaj, że jeśli debugger nie zostanie wyświetlony, będziesz musiał złapać wyjątek w swoim kodzie, a więc obróć kod próbnym haczykiem.
Jeśli makra nie są potrzebne i można je zignorować, należy użyć polecenia msoAutomationSecurityForceDisable, aby je całkowicie wyłączyć.
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, znalazłeś tam rozwiązanie? – Jerome
Czy możesz podać przykładowy arkusz kalkulacyjny, który generuje błędy i kod, którego używasz do odczytania wartości? – Lumigraphics
Nie sądzę, że to pomoże. Załóżmy, na przykład, wywołanie prostego makra Test1, z pojedynczą instrukcją, przekazywanie podwójnego do funkcji oczekującej ciągu. W ten sposób powstałby błąd niedopasowania typu w czasie wykonywania, powodując wyżej wymienione przerywanie pop-up. – Jerome