• ベストアンサー

Excelマクロのファイルサイズ

現在、Excelにて帳票を出すマクロを開発しています。 具体的にはCSVファイルを読み込み、ヘッダーから帳票の種別を確認し、その帳票にあった形で出す、といったマクロです。 で、本題なのですが、このマクロ自体が数年前からの改修、機能追加の嵐で、ファイルサイズが膨れあがっています。(現在4MByte強) たしかにFormも8枚、Basも16個、classが1つと結構な規模ではあるのですが、あまりにも大きくてセーブするだけでも一苦労です。 そこで質問です。 (1)ExcelマクロでもAccessの様にゴミ(?)がたまってファイルサイズが大きくなる事はあるのでしょうか? (2)上記、Yesの場合、小さくするようなメニューはありますか?ない場合、簡単に小さくする方法はありますか? 一つ一つインポート→エキスポートしかないですか? (3)1がNoの場合、何がファイルが大きくなる原因でしょうか?純粋に書いたコード(+Formの場合コントロールのプロパティ等) に比例するのでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 ここにこんなツールがあるようです。 http://homepage2.nifty.com/kmado/ksoft10.htm このツールは、昔から紹介をされているもので、それなりに定評あるそうですが、結局、オブジェクト自体の更新をしていけば、それは膨らんでいくでしょうね。純粋にデフォルトでない限りは、オブジェクト自体の更新というのは、何かを残して積み上げしていきますから、一旦、全てを消さない限りは、本当の意味の更新はされないようです。 ただし、最近、ようやく分かったのですが、「電子のゴミ」がたまるほうの話は、ちょっと別問題なのです。ワークブック全体のエラーの問題に発展しかねないのです。

teiou68k
質問者

お礼

情報、ありがとうございました。 そういったツールが存在するのですね。 私も手作業でやりながら面倒だなぁとは思っていたので。 このツールの購入も検討してみます。

teiou68k
質問者

補足

締めますので便宜上No2の方のところへ書きます。 No1の方の実験の結果をふまえ、手動にて1つ1つエクスポート→インポートを繰り返してみましたが、OCX?の関係でかエラーが出てうまく行きませんでした(T_T) そこでNo2の方の紹介して下さったツールを使ってみたところ、問題なく成功し、約3/4のファイルサイズになりました(^^) 他にもいろいろ使えそうな機能があるようなので、Project的には購入の方向で検討する事になりました。情報ありがとうございました。

その他の回答 (1)

回答No.1

以下のテストをしてみました。 13,824 バイト ファイル(Book1)を新規作成(初期状態) 19,968 バイト Book1に新規フォームを作成 20,480 バイト フォームにボタンを4個作成 19,968 バイト フォームからボタンを4個抹消 16,896 バイト フォームを開放した(初期状態) なぜか、フォームを開放しても、初期状態とファイルサイズが異なっています。 VB同様に、モジュール事態はアスキーだけど、EXCELのバイナリのファイルに含まれて保存されているモジュールなので、管理しているEXCELが膨らむようですね。 だから(1)の通りで、(2)の方法がベストだと思います。 (3)については推測です。 モジュールはアスキーで、それをEXCELファイルの中に埋め込んでいると思うので、記述やオブジェクトの数は影響すると思います。 プロパティについては、デフォルトプロパティ以外を設定すると、領域に保存されると思いますので、膨らむと思います(EXCELがVBと同じ管理方法ならですが) 一番無駄な領域を取っているのは、これらのモジュールを管理するEXCEL本体のファイルだと思うので、ファイルの追加/開放は慎重に行った方がいいかもしれません。

teiou68k
質問者

お礼

金曜にお礼を書いたつもりが・・・(消えてる?勘違い) 私の方で実験すれば良かったですね。反省。 1050YENさんのご意見をふまえて面倒ですが、全てのモジュールをエクスポートしました。 今後は新しいファイルを作る事をふまえて検討していきます。ありがとうございました。

関連するQ&A