• ベストアンサー

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

はじめまして、Excel VBAにて困っていますので教えてください。 ・以下の構造でExcelを起動しております。 1.VB6で作成したアプリケーションよりExcelで使用するためのデータ抽出を  行います。 2.抽出終了後、上記アプリケーションよりExcelを起動し、VBAマクロ  機能を使用し、自動印刷(複数帳票あり)を行います。(上記アプリケーションは待機状態) 3.印刷終了後、上記アプリケーションに戻ります。 ・自動マクロ機能なので、処理終了後に上記3.に戻るのですが、リソース不足に より(印刷時にリソースが消費されます)ハングアップ状態になる時があります。  そこで、リソース不足を解消したいと思っているのですが、ExcelVBAでリソース 不足を解消する方法がありましたら、教えていただきたいのですが。 ・私としては、印刷の時に、次の印刷時に前回の印刷が終了するまでマクロを待機 させたいと思っております。  よろしくお願いします。

  • akfk
  • お礼率42% (9/21)

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

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.6

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

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=103563
akfk
質問者

お礼

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

その他の回答 (5)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.5

>確かにブックの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
質問者

補足

TAGOSAKU7さん。ありがとうございます。 少しだけ改善されましたが、根本的には解決には至りませんでした。 どうも印刷スプール時にリソースを消費しているみたいなので、こちらの方で 解決策があれば教えてください。

  • zerosix
  • ベストアンサー率31% (47/149)
回答No.4

マシンスペックは問題ないかと思います。 恐らくあなたの書いているコードに問題があるとしか言えません。 メモリのバグは発見しにくいものなのであなたのコードをよく眺めてごらん というしか出来ません。 頑張ってください。

akfk
質問者

補足

zerosixさん。ありがとうございます。 どうも印刷スプール時にリソースを消費しているみたいなので、こちらの方で 解決策があれば教えてください。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

あとー 一つ質問なのですが、これはzerosixさんの発言の延長ですが、Excelを何度も起動してませんか? OK処理 エクセル起動 ブック1オープン ブック1クローズ ブック2オープン ブック2クローズ ブック3オープン ブック3クローズ エクセル終了(ここで開放) NG処理 エクセル起動 ブック1オープン ブック1クローズ エクセル終了 エクセル起動 ブック2オープン ブック2クローズ エクセル終了 エクセル起動 ブック3オープン ブック3クローズ エクセル終了(ここで開放) こんなことにはなってないですよね?

akfk
質問者

補足

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%をきってしまいました。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

きちんと変数を使用してますか? オブジェクトやコントロールからの参照を何度も行ってませんか? 例えば if Form1.Text1.Text = "1" then elseif Form1.Text1.Text = "2" then end if というような処理を行ってませんか? オブジェクト参照の回数が多いほど、負荷がかかります。 それと セルへの値をセットを一つのセルごとに行うと付加がかかります。 範囲選択をして、まとめて値をセットするようにしましょう。 コードを見てみないと、主にどこで不可がかかっているかがわかりません。。。

  • zerosix
  • ベストアンサー率31% (47/149)
回答No.1

マシンスペックが書かれていませんので推測ですが、 プログラムでできることとしては、 オブジェクトをsetすると、きちんと開放してあげたりしている のでしょうか? set HogeObj = CreateObject("aaa") set HogeObj = nothing と言う感じで、オブジェクトの開放をエラー時でも行って いるのでしょうか?

akfk
質問者

補足

マシンスペックを記述していませんでしたので、記述します。 OS :WINDOWS98 CPU:Pentium2 233MHZ メモリ:64MB 機種:FMV6233D9

関連するQ&A

  • リソース不足は解消したのに・・・

    昨日エクセルが立ち上がらなくてどうしよう、と質問した者です。 エクセルを立ち上げたり、エクセルのファイルを開こうとすると固まってしまい、強制終了をかけると「システムリソースが極端に不足しています」とか「他のアプリケーションをただちに終了してください」とか表示されます。他に開いているものなぞありません。 で、回答者さんの意見とこちらで検索したものを参考にリソース不足はなんとか解消したのですが(84%になりました)、いまだにエクセルは立ち上がりませんし、同じ表示が出ます。その時、Microsoft Officeの修復も試みました。 エクセル以外のアプリケーションはまったく普通通りに立ち上がります。他に考えられる原因&対策をお願いします。

  • Excelでリソース不足を解消する方法

    メモリを1GB実装しているパソコンで25MBのエクセルファイル(セルからデータを抽出して表示するフォーム)を作りました。 編集をして名前を付けて保存しようとしたら「リソース不足です他のアプリケーションを終了してください」というエラーメッセージが表示され、保存できなくなりました。 他にソフトは起動してなかったのですがなぜこのような問題が発生するのでしょうか? リソース不足を解消する方法が有りましたらおしえてください。

  • リソース不足のため、このタスクを完了することができ

    エクセル2010なのですが vbaを実行後、 「リソース不足のため、このタスクを完了することができません。選択するデータをすくなくするか、ほかのアプリケーションを終了して再度試してください。」と出る時があります。 毎回じゃないです。 何回かOKを押すと、消えて、vbaが中断し、ファイルが強制終了され、再度自動で開きます。 ファイルにイメージや画像をたくさん置いてるのですがそれが原因でしょうか? osはwin7です。

  • エクセルのリソース不足

    エクセル2003で列全体を指定して文字の中央揃えをしていたら 突然 「リソース不足のため、このタスクを完了できません。 選択するデータを少なくするか、ほかのアプリケーションを 終了して再度試してくださ」 とメッセージがでました。 確かに大きなファイル(50MB)でマクロも数式もたくさん使用していますが こんなのは初めての経験なので驚いています。 このとき ほかのアプリケーションは起動させていませんでした マクロの変数宣言でリソースを使い過ぎているのでしょうか 選択するデータを少なくすればこのまま使い続けられるか不安です 対処法を教えてください

  • エクセル2003 リソース不足

    ご質問です。 エクセルのマクロ実行中に下記エラーが出ます。 「リソース不足のため、このタスクを完了することができません。選択データを少なくするか、他のアプリケーションを終了して再度試してください。」 しかし、現在このエクセルのみを実行しています。 ただ、このエクセルファイルが5Mほどある大きなものです。 これが影響していますか? もし、対処の方法がありましたら お教え下さい。 よろしくお願い致します。

  • リソース不足の解消について

    基本的なことですみません。過去ログでもあったかもしれませんが、 リソースで検索するとたくさん出てきてわからなかったので、 質問させていただいています。 私のパソコンはNECVALUESTARの3年前の物で、OSはwin98です。メモリーの増設をして192MBにしたのですが、どうもリソースが不足しやすいようなんです。すぐに40%くらいになります。起動時ですでに50%程度です。リソース不足の解消の仕方を教えてください。考えられる原因なども、よろしけれはアドバイスください。回答しにくい質問かもしれませんが、回答していただければ、その都度補足や状態をお返事させていただきますので、どうかよろしくお願いします。 リソース不足に気付くのは、IEで新しい窓を開けたり、リンクに飛ぼうとする時に、画面表示が遅く、フリーズに近い状態になる時で、その時パフォーマンスを見て、リソースが30%くらいになってると、再起動をするようにしています。

  • XPでリソース不足

    XPを使用しています。 最近Excelのデータを印刷しようとするとリソース不足と表示されて印刷ができません。 Excelを再起動すると印刷できたりできなかったり…。 気まぐれな感じで(…)困っています。 タスクトレイの常駐ソフトは3つ。デスクトップアイコンは6つ。 壁紙・ポインタ等、初期状態のままで、ゴミ箱は空です。 ちなみに印刷しようとしたExcelファイルは240KBくらい。 どうしたらリソース不足が解消されるでしょうか? XPではリソース不足の心配はほとんどないと聞いていたのでびっくりです。 今は他のPCから印刷をしていますが、忙しい時期に印刷ができないままなのではと危惧しています。 初心者なので分かりやすく教えていただけたらと思っています。 宜しくお願いします。

  • システムリソース不足を改善したいのですが。

    ここの所、PCの起動にとても時間がかかるようになり、 (どうやらタスクトレイ内のアプリケーションの自動起動 の所為のようで)PCの動作も段々遅くなってきました。 今ではかなり遅くて、終了時にビジー状態エラーが出ます。 (待機・終了・キャンセルの選択ウィンドウが出る) システムリソースの不足が理由でしょうか? 因みに今現在書き込みを行っている状態でリソースの空きが 27%です。 タスクトレイから常駐アイコンを削除するなどの方法を 調べたのですが、どれをどう消してよいものかわかりません。 宜しくお願いします。

  • リソース不足のため

    エクセル2010です。 シート全体をコピーして 新規シートを挿入し、そこに貼り付けようとしたのですが 「リソース不足のため、 このタスクを完了することができません。 選択するデータを少なくするか、ほかのアプリケーションを終了して再度試してください。 元に戻さずに続けますか?」 となり、1行しかコピーされません。 全部で、512行あります。 なぜコピペできないのでしょうか?

  • リソース不足

    Windows XP(HOME Edition)を使ってます。 急に、昨日まで使っていたソフトが起動出来なくなりました。 メモリ不足かな・・・と思い、常駐ソフトを終了して いらないアプリを削除して、最適化して再起動した後に 起動出来なくなったソフトを起動してみたんですが、やはり 出来ませんでした。 システムリソースの不足でしょうか? 以前はMEを使ってたんですが、MEだとリソースメーターが あったのでよかったのですが、XPってないですよね? リソース不足の解消はどうしたらいいのでしょうか? お詳しい方がいましたら、教えてください。 お願い致します。 一応、私のパソコンのスペックは以下です。 Pentium 4 CPU 3.60GHz ハード 400GB メモリ 2GB