いくつかのレガシー 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 も実行しているマシンから同じコードを実行すると、問題なく動作します。
これをトラブルシューティングする方法についてのアイデアはありますか?
ありがとう!