Member 12775823 Ответов: 2

Как решить .Объем выполнения 1026


У меня есть программа на C#, которая использует System. Runtime.InteropServices для вызова макроса Excel. Программа работает в планировщике задач и обычно работает без инцидентов. Однако иногда я получаю идентификатор события 900 из программы моей необработанной логики исключений .Событие NET Runtime 1026, затем ошибка приложения 1000.
Необработанный результат исключения:


.Чистая событием среды 1026


Ошибка Приложения 1000


Что я уже пробовал:

Я добавил информационные сообщения в журнал событий, чтобы показать, что оператор в коде, который не работает, имеет следующий вид: oExcel. Run (Mname); полный блок кода:
статический недействительным GetExcel(имени, строки, строки Mname)
{
строка семерка;
строка проходить = "CFHIMA_CallMAcro";

пропуск объекта = система.Отражение.Недостающий.Ценность;
sEvent = " GetExcel 01";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

Превосходить.Приложение oExcel = новый Excel.Приложение();
sEvent = " GetExcel 02";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

oExcel.Видна = ложь;
Превосходить.Рабочие книги oBooks = oExcel.Рабочая тетрадь;
sEvent = " GetExcel 03";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

Превосходить._Workbook oBook = null;
sEvent = " GetExcel 04";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

oBook = oBooks.Open (Fname, oMissing, oMissing,
омиссинг, омиссинг, омиссинг, омиссинг, омиссинг, омиссинг,
омиссинг, омиссинг, омиссинг, омиссинг, омиссинг, омиссинг);
sEvent = " GetExcel 05";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

oExcel. Run(Mname);
sEvent = " GetExcel 06";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

oBook.Рядом(накладные, oMissing, oMissing);
sEvent = " GetExcel 07";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

Система.Время Выполнения.InteropServices.Маршал.ReleaseComObject(oBook);
sEvent = " GetExcel 08";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

oBook = null;
sEvent = " GetExcel 09";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

Система.Время Выполнения.InteropServices.Маршал.Метода releasecomobject(oBooks);
sEvent = " GetExcel 10";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

oBooks = нуль;
sEvent = " GetExcel 11";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

oExcel.Бросить();
sEvent = " GetExcel 12";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

Система.Время Выполнения.InteropServices.Маршал.ReleaseComObject(oExcel);
sEvent = " GetExcel 13";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

oExcel = null;
sEvent = " GetExcel 14";
Журнал событий.WriteEntry(sSource, sEvent, EventLogEntryType.Информация, 0);

}

[no name]

Добавьте в свою программу некоторую обработку исключений.

Member 12775823

У меня есть. Я вставил необработанный обработчик исключений. Я знаю оператор в c#, который не завершает [oExcel. Run(Mname); ]. вывод обработчика исключений:
-

2 Ответов

Рейтинг:
1

#realJSOP

Поставить try/catch блок вокруг всего после определения oMissing В этот момент Вы можете проверить sEvent чтобы увидеть, где он терпит неудачу.


Member 12775823

Я знаю, где он терпит неудачу. [oExcel.Run(Mname); ] выходные данные обработчика необработанных исключений:
-

Рейтинг:
0

johannesnestler

Я бы сказал, что что - то идет не так в вашем макросе-может быть, в Excel возникает необработанное исключение? хотя это только предположение...
Посмотрите, если вы можете узнать, если что-то пойдет не так в макросе, если вы столкнетесь с ошибкой...