PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
16602 01/11/20 13:08:18 RE(2):PB7.0: OLEでEXCEL出力時のエラー処理について By あいっち
16597 01/11/20 11:25:48 RE(1):PB7.0: OLEでEXCEL出力時のエラー処理について By Potato
16595 01/11/20 11:03:03 PB7.0: OLEでEXCEL出力時のエラー処理について By あいっち

カテゴリ:データウィンドウ
日付:2001年11月20日 11:03 発信者:あいっち
題名:PB7.0: OLEでEXCEL出力時のエラー処理について

  いつも、皆様のご意見を活用させて頂いている者ですが、今回は初めて質問させて頂きます。
  まず今現在の処理内容ですが、あるDWに表示した情報を表示行を変更したり、合計行を追加したりしながら
OLEを使って(非表示のOLEコントロール)、EXCEL(既存のファイルを帳票フォーマットとして使用)に1セルずつ
データを貼り付け、汎用帳票のイメージで出力しています。
  この方法で処理を続けると、データを貼り付ける毎にメモリを消費していって最終的には「外部オブジェクト 
プロパティcellsのアクセスエラーです。」という実行エラーが表示されて、アプリケーションが終了してしまいます。
  タスクマネージャで調べると、PBのexeが170?180MB,エクセルが20MBぐらいでこのようなメッセージが出ます。
物理メモリは20MB程度残っています。PCのメモリは256MBですが、他のPCで512MB,物理メモリが200MB残っていても
同じような現象になりました。
  状況説明が長くなりましたが質問です。OLEのエラー処理はerrorイベントやExternalExceptionイベントでしか
認識する事ができないのでしょうか?下記に示しますサンプルコードの「?.cells[h, j].value = s」の部分で、
貼り付け前後で成功・失敗を判断し(戻り値のようなもので判断)、そこでエラー処理をするような事は可能でしょうか?
エラーを認識した時点までのEXCELを表示してから、アプリケーションを終了させるなどの処理をしようと思ったの
ですが、時折oleコントロールのerrorイベントを通らずにSYSTEMERRORイベントまで直接飛んでしまう事があったの
で、もし出力処理の部分でエラーを捕まえられればその後の処理をまとめられると思い、質問した次第です。
お忙しいところ申し訳ございませんが、どなたかご存知の方がいらっしゃいましたら宜しくお願い致します。

以下に簡単なサンプルコードを示します。
OLEObject oleobj_o1
oleobj_o1 = ole_1.Object

ole_1.InsertFile(fname)     //fnameに帳票フォーマットイメージのエクセル
for h = 1 to 行
  for j = 1 to 列
   //ここでsにDWから取得してきた値が入る
   oleobj_o1.sheets(1).cells[h, j].value = s    //[h,j]は実際には条件により貼り付け時に変動する
  next
next
ole_1.Activate(offsite!)

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows NT 4.0
DBMS Oracle SQL*Net 8
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.