アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access97から社員マスタを基に、一人1ブックずつExcelデータをバッチで作成しています。一人ずつの処理なら問題なくできますが、400名を一度に実行すると、Excelの「メモリ不足」でハングアップしてしまいます。
Accessのフォーム上で区分を入力し、それをもとに個々にどのブックを開くか判断してOPENします。内容をセットして別名で保存しています。
一人ずつの各ループの中でExcelの起動・終了をしているのがまずいのでしょうか?

A 回答 (3件)

400ファイル出力時に


エクセルを自動起動していますか?
(しないことをおすすめします)
していないのにダメな場合は
まとめたものを1ファイルとして
出力したものを使うのが良いのでは
ないでしょうか。

ファイル出力というのは
そうです、EXCELです。

一つひとつを画面で開くと
重いのではないでしょうか。
開いてますか、基になる各ブックを。
(画面上に表示されないような処理
をおすすめします)
もし面倒でなければ少し詳しく
処理、画面の流れを説明してください。

この回答への補足

本当にていねい説明していただいてありがとうございます。
長くなりそうですが、もう1回最初から説明します。
Excelの画面は起動していません。
Acessテーブルとして社員マスタがあります。それと部署マスタ。
(社員マスタの内容は、番号、氏名、所属、役職、職種、身分・・)
社員1人1ブックでEXCELデータを作成しますが、その際にテンプレートとなるブックを、役職・職種で判断し選択しています。(これは別関数)
更に作成したブックは部署ごとにフォルダを自動作成してそこに保存しています。(これも別関数)
PGとしては本当に単純な構造ですが

・SQL文で社員マスタから対象社員をセレクト(レコードセット作成)
・Excelオブジェクト作成(Set exce = = CreateObject("Excel.application"))
・レコードセットの社員コードでループ
   社員マスタの役職・職種から対象テンプレートを選択
   そのブックを開く
   値をセットする
   保存先のフォルダ名取得
   別名で保存
   そのブックをクローズ(false)
そのシートオブジェクトを開放
   ブックオブジェクト変数開放
・ループ抜け
   Excel終了(オブジェクト.Quit)
Excelのオブジェクト変数開放
処理終了

以上です。今までいただいたアドバイスをもとに、じっくりもう一度やってみようと思います
   

補足日時:2002/02/12 09:47
    • good
    • 0

2.セットすべきデータをファイル出力についてですが


処理の内容が分からないので推測ですが
個別に400ファイル出力しても
400人分を1ファイルとして出力しても
可能だと思います。
個別ブックと個々のデータをつなぐ
情報があれば。
あとはExcel/VBAで処理するということです。
画面の見た目では
アクセスを動かして
自動でエクセルが処理して
アクセスに戻ってくるイメージ
なのでご希望に近いものではないかと思います。

この回答への補足

>個別に400ファイル出力しても

この部分でコケてしまってます。(メモリ不足)
・・というよファイル出力というのはEXCELに、と考えていいんでしょうか?


いわゆる社員マスタの内容を1人1ブックで出力していますが
社員の役職や職務内容に応じてPGで基となるブックを切り替えたり
しています。

補足日時:2002/02/10 15:10
    • good
    • 0

根本的な解決になっていませんが


エクセルの起動をせず、ファイルの出力だけ
まとめて行ってしまってから
エクセルで処理をするというのではだめでしょうか。
個々のブック用のデータをそれぞれ一括で作成してしまい、
あらためてエクセルで処理する。
処理のイメージ
1.アクセスのフォームで区分を入力
2.セットすべきデータをファイル出力
(一時保管用。エクセル自動起動はしない)
3.400人終了したらマクロを持った
エクセルファイルを起動
(アクセスから=エクセル自動起動する)
4.エクセルファイルはファイルを
開いた時に自動開始するマクロを持っている。
2で出力したファイルと個々のブックを
照合しながら内容をセット、別名保存を
400ファイル、自動で繰り返して
終了したら、エクセルを自動終了
5.アクセスに戻る。
というのはどうですか。
不明、不足は質問ください。
他には、エクセルが複数起動しようとしているかもしれません。
この場合はWindowsのAPIでエクセルの終了を確認してから
次の処理に移る(次の人の処理に移る)制御をしないと
いけないのかもしれません。APIは詳しくありませんが。

この回答への補足

>2.セットすべきデータをファイル出力
>(一時保管用。エクセル自動起動はしない)

の意味がわからないのですが。とりあえず一覧形式でシートに吐き出して
あとはすべてExcel/VBAで処理するということなのでしょうか?

補足日時:2002/02/09 18:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!