Я поддерживаю некоторые устаревшие коды прогресса 4GL. Один из наших серверов с 4GL был обновлен до Office 2007 без моего ведома (хорошо, правда?). Во всяком случае, обновление разбило сегмент кода, в котором работает компонент excel.application COM. Финансы поддерживает список номеров прогноза продаж, что они держат в документе Excel и следующий код загружает эти цифры:Обновление Office 2007 4GL Код прогресса
CREATE
"Excel.application" chExcelApplication NO-ERROR.
ASSIGN
chExcelApplication:VISIBLE = NO NO-ERROR.
ASSIGN
chWorkbook = chExcelApplication:Workbooks:OPEN(STRING(i-infile)) NO-ERROR.
ASSIGN
chWorkSheet = chExcelApplication:Sheets:ITEM((1)) NO-ERROR.
IF input frame f-in Plan1 <> 0 THEN
Plan1 = input frame f-in Plan1.
ELSE
Plan1 = chWorkSheet:range(forecastColumn + "4"):VALUE.
IF input frame f-in Plan2 <> 0 THEN
Plan2 = input frame f-in Plan2.
ELSE
Plan2 = chWorkSheet:range(forecastColumn + "7"):VALUE.
IF input frame f-in Plan3 <> 0 THEN
Plan3 = input frame f-in Plan3.
ELSE
Plan3 = chWorkSheet:range(forecastColumn + "6"):VALUE.
Когда код работает, я получаю следующее сообщение об ошибке:
«Invalid компонент-ручке ссылка в процессе обработки/оператора: Range. "
Странно, что A) он не прерывается командой «Открыть» или «Создать», поэтому это не похоже на проблему с самим объектом COM. И B) если я запустил тот же код с моего компьютера, который также запускает Office 2007, он работает отлично.
Любые идеи о том, как я могу устранить эту проблему?
Спасибо!