0

我支持一些遗留的 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 的机器上运行相同的代码,它运行得很好。

关于如何解决这个问题的任何想法?

谢谢!

4

1 回答 1

0

我将excel的内容复制到一个新文件中,现在它可以很好地提取数字。奇怪的...

于 2011-01-10T16:44:09.377 回答