0

いくつかのレガシー 4GL プログレス コードをサポートしています。4GL を実行しているサーバーの 1 つが、知らないうちに Office 2007 にアップグレードされていました (いいですね)。とにかく、アップグレードにより、excel.application COM コンポーネントを実行しているコードのセグメントが壊れました。財務部門は、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.

コードを実行すると、次のエラーが表示されます。

「メソッド/ステートメントの処理中に無効なコンポーネント ハンドルが参照されました: Range.」

奇妙なことに、A) 「開く」コマンドまたは「作成」コマンドでは失敗しないため、COM オブジェクト自体に問題があるようには見えません。B) Office 2007 も実行しているマシンから同じコードを実行すると、問題なく動作します。

これをトラブルシューティングする方法についてのアイデアはありますか?

ありがとう!

4

1 に答える 1

0

Excel の内容を新しいファイルにコピーしたところ、問題なく数値が取得されました。変...

于 2011-01-10T16:44:09.377 に答える