我支持一些传统的4GL Progress代码。我们运行4GL的服务器之一在我不知情的情况下升级到了Office 2007(很好,对吧?)。无论如何,升级打破了运行excel.application COM组件的一段代码。 Finance维护一个销售预测编号列表,这些编号保存在Excel文档中,以下代码加载这些编号:
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.
当代码运行时,我收到以下错误:
“处理方法/语句时引用的组件句柄无效:范围。”
奇怪的是A)它在“打开”命令或“创建”命令上没有失败 - 所以它似乎不是COM对象本身的问题。并且B)如果我从运行Office 2007的机器运行相同的代码,它运行得很好。
关于我如何解决这个问题的任何想法?
谢谢!
答案 0 :(得分:0)
我将excel的内容复制到一个新文件中,它现在正好拉数字。奇怪的...