Игнорировать ошибки Excel VBA во время чтения значений ячеек из C # через взаимодействие COM - PullRequest
6 голосов
/ 09 августа 2010

Я использую макросы VBA из C #, что может привести к ошибкам. Эти ошибки характеризуются всплывающими подсказками об отладке, прерывании работы приложения и необходимости ввода данных пользователем. Мне нужны эти макросы, и их нельзя отключить.

Как я могу автоматически игнорировать эти ошибки или закрывать диалоги?

Ответы [ 2 ]

1 голос
/ 18 июля 2015

Ör самым простым и простым способом.Включите on error resume next в свои макросы, чтобы макрос не останавливался на ошибках.

0 голосов
/ 15 июля 2015

Чтобы скрыть редактор Visual Basic (который показывает, когда возникает ошибка) перед попыткой открыть файл, измените Excel.VBE.MainWindow.Visible на false.Имейте в виду, что если отладчик не отображается, вам придется перехватывать исключение в своем коде, поэтому оберните свой код в попытку перехвата.

Если макросы не нужны и их можно игнорировать, используйте msoAutomationSecurityForceDisableотключить их полностью.

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;
...