-PR-
解決済み

リソース不足を解消したい

  • すぐに回答を!
  • 質問No.168434
  • 閲覧数3547
  • ありがとう数1
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 42% (9/21)

はじめまして、Excel VBAにて困っていますので教えてください。
・以下の構造でExcelを起動しております。
1.VB6で作成したアプリケーションよりExcelで使用するためのデータ抽出を
 行います。
2.抽出終了後、上記アプリケーションよりExcelを起動し、VBAマクロ
 機能を使用し、自動印刷(複数帳票あり)を行います。(上記アプリケーションは待機状態)
3.印刷終了後、上記アプリケーションに戻ります。

・自動マクロ機能なので、処理終了後に上記3.に戻るのですが、リソース不足に
より(印刷時にリソースが消費されます)ハングアップ状態になる時があります。
 そこで、リソース不足を解消したいと思っているのですが、ExcelVBAでリソース
不足を解消する方法がありましたら、教えていただきたいのですが。

・私としては、印刷の時に、次の印刷時に前回の印刷が終了するまでマクロを待機
させたいと思っております。

 よろしくお願いします。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.6
レベル13

ベストアンサー率 59% (729/1235)

たぶん、印刷スプール中にリソースを消費していると思う。
PrintOut後に印刷スプール終了を待つのはどうでしょう?
と言いつつも、Wordだと簡単だけどExcelの場合は簡単は方法は思い浮かばない。
お礼コメント
akfk

お礼率 42% (9/21)

todo36さん。ありがとうございました。
参考URLのサンプルを参考に実行したら、リソース不足がかなり解消されました。
出力先がレーザープリンターの為、実感がわきませんでしたが、自宅に持ち帰り、インクジェットプリンタに出力すると、リソース不足が解消されているのがわかり
ました。
投稿日時 - 2001-11-14 23:17:46

その他の回答 (全5件)

  • 回答No.1
レベル10

ベストアンサー率 31% (47/149)

マシンスペックが書かれていませんので推測ですが、
プログラムでできることとしては、
オブジェクトをsetすると、きちんと開放してあげたりしている
のでしょうか?

set HogeObj = CreateObject("aaa")
set HogeObj = nothing

と言う感じで、オブジェクトの開放をエラー時でも行って
いるのでしょうか?
補足コメント
akfk

お礼率 42% (9/21)

マシンスペックを記述していませんでしたので、記述します。

OS :WINDOWS98
CPU:Pentium2 233MHZ
メモリ:64MB
機種:FMV6233D9
投稿日時 - 2001-11-14 11:02:25


  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

きちんと変数を使用してますか?
オブジェクトやコントロールからの参照を何度も行ってませんか?
例えば
if Form1.Text1.Text = "1" then
elseif Form1.Text1.Text = "2" then
end if
というような処理を行ってませんか?
オブジェクト参照の回数が多いほど、負荷がかかります。


それと セルへの値をセットを一つのセルごとに行うと付加がかかります。
範囲選択をして、まとめて値をセットするようにしましょう。


コードを見てみないと、主にどこで不可がかかっているかがわかりません。。。
  • 回答No.3
レベル12

ベストアンサー率 65% (276/422)

あとー
一つ質問なのですが、これはzerosixさんの発言の延長ですが、Excelを何度も起動してませんか?

OK処理
エクセル起動
ブック1オープン
ブック1クローズ
ブック2オープン
ブック2クローズ
ブック3オープン
ブック3クローズ
エクセル終了(ここで開放)

NG処理
エクセル起動
ブック1オープン
ブック1クローズ
エクセル終了
エクセル起動
ブック2オープン
ブック2クローズ
エクセル終了
エクセル起動
ブック3オープン
ブック3クローズ
エクセル終了(ここで開放)

こんなことにはなってないですよね?
補足コメント
akfk

お礼率 42% (9/21)

TAGOSAKU7さん。ご指摘ありがとうございます。
確かにブックのOPEN・CLOSEを数回行っています。

コードは以下のようにしております。

Public Sub XLSM0050_PRINT_SEC()
Dim W_FILE As String
Dim PV_X As Variant
On Error GoTo ERROR_TRAP

Application.StatusBar = True
Application.StatusBar = "EXCEL添付文書出力中"

Open PB_TXTPATH & "INPM0250.TXT" For Input As #1

While Not EOF(1)
W_FILE = ""
Input #1, W_FILE
If W_FILE <> "" Then
Workbooks.Open FileName:="" & W_FILE & ""
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWindow.Close
End If
Wend

Close #1
Exit Sub

ERROR_TRAP:
PV_X = ABEND_SEC("1", "XLSM0010", "XLSM0050_PRINT_SEC", "")
End Sub

試しに、印刷コード(ActiveWindow.SelectedSheets.PrintOut Copies:=1)
をコメントアウトして実行すると、リソース不足にはなりませんでした(残50%)

試しに、印刷コード(ActiveWindow.SelectedSheets.PrintOut Copies:=1)
をコメントアウトせずに実行すると、リソース不足にはなりませんでしたが、
リソース残が30%をきってしまいました。
投稿日時 - 2001-11-14 12:57:42
  • 回答No.4
レベル10

ベストアンサー率 31% (47/149)

マシンスペックは問題ないかと思います。
恐らくあなたの書いているコードに問題があるとしか言えません。

メモリのバグは発見しにくいものなのであなたのコードをよく眺めてごらん
というしか出来ません。
頑張ってください。
補足コメント
akfk

お礼率 42% (9/21)

zerosixさん。ありがとうございます。
どうも印刷スプール時にリソースを消費しているみたいなので、こちらの方で
解決策があれば教えてください。
投稿日時 - 2001-11-14 16:12:52
  • 回答No.5
レベル12

ベストアンサー率 65% (276/422)

>確かにブックのOPEN・CLOSEを数回行っています。
ブックのオープンクローズはOKです。
NGなのはエクセル本体の起動、終了を複数回行った場合です。

それと、画面の描画もメモリを消費しますので、コードをちょっとだけ変更させてみました。
これでもダメですか?


Public Sub XLSM0050_PRINT_SEC()
  Dim W_FILE As String
  Dim PV_X As Variant
  On Error GoTo ERROR_TRAP

  Application.StatusBar = True
  Application.StatusBar = "EXCEL添付文書出力中"

  Application.ScreenUpdating = False
  Open PB_TXTPATH & "INPM0250.TXT" For Input As #1

    While Not EOF(1)
      W_FILE = ""
      Input #1, W_FILE
      If W_FILE <> "" Then
        Workbooks.Open Filename:="" & W_FILE & ""
        ActiveWindow.SelectedSheets.PrintOut Copies:=1
        ActiveWindow.Close
      End If
    Wend

  Close #1

  Application.ScreenUpdating = True

PGMEND:
  Exit Sub

ERROR_TRAP:
  Application.ScreenUpdating = True
  PV_X = ABEND_SEC("1", "XLSM0010", "XLSM0050_PRINT_SEC", "")
  GoTo PGMEND
End Sub
補足コメント
akfk

お礼率 42% (9/21)

TAGOSAKU7さん。ありがとうございます。
少しだけ改善されましたが、根本的には解決には至りませんでした。
どうも印刷スプール時にリソースを消費しているみたいなので、こちらの方で
解決策があれば教えてください。
投稿日時 - 2001-11-14 16:09:55
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


専門家があなたの悩みに回答!

ピックアップ

ページ先頭へ