OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

AccessからExcelブック作成でメモリ不足

  • 暇なときにでも
  • 質問No.213989
  • 閲覧数619
  • ありがとう数0
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 0% (0/18)

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

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

  • 回答No.3
レベル9

ベストアンサー率 69% (51/73)

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

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

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

お礼率 0% (0/18)

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

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

以上です。今までいただいたアドバイスをもとに、じっくりもう一度やってみようと思います
   
投稿日時 - 2002-02-12 09:47:44
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル9

ベストアンサー率 69% (51/73)

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

お礼率 0% (0/18)

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

の意味がわからないのですが。とりあえず一覧形式でシートに吐き出して
あとはすべてExcel/VBAで処理するということなのでしょうか?
投稿日時 - 2002-02-09 18:14:31

  • 回答No.2
レベル9

ベストアンサー率 69% (51/73)

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

お礼率 0% (0/18)

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

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


いわゆる社員マスタの内容を1人1ブックで出力していますが
社員の役職や職務内容に応じてPGで基となるブックを切り替えたり
しています。
投稿日時 - 2002-02-10 15:10:44
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ