У меня есть метод взаимодействия C #, который открывает файл Excel, запускает макрос, сохраняет и закрывает его.
private void DoExcelMacro(string fileName, string macroName)
{
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workbook;
workbook = excel.Workbooks.Open(fileName);
excel.DisplayAlerts = false;
excel.Run(macroName);
Worksheet ws = workbook.ActiveSheet;
workbook.SaveAs(fileName);
excel.DisplayAlerts = true;
ws = null;
workbook.Close();
workbook = null;
excel = null;
GC.Collect();
}
Он отлично работает, если в макросе нет ошибок, например:
Public Sub MacroEntry()
Dim test AS Integer
test = "A"
End Sub
Отключение DisplayAlerts
не работает.Если я нажимаю «Конец» во всплывающем окне, я получаю сообщение об ошибке в своем приложении на C #.
Вопрос 1: Есть ли способ подавить всплывающее окно с ошибкой, но пусть ошибка падает доприложение C #?
Или
Я могу изменить макрос Excel, чтобы поймать ошибку
Public macroError As ErrObject
Public Sub MacroEntry()
On Error GoTo ErrorHandler
Dim test As Integer
test = "A"
ErrorHandler:
Set macroError = Err
Exit Sub
End Sub
Вопрос 2: Как прочитатьПеременная Excel macroError
из объекта взаимодействия C #?
Я бы предпочел решение вопроса 1, если это возможно.