ラベル Excel、ノウハウ の投稿を表示しています。 すべての投稿を表示
ラベル Excel、ノウハウ の投稿を表示しています。 すべての投稿を表示

2010年5月3日月曜日

Excelのマクロ実行は遅い理由2

原因3.マクロの作り方の問題
 どの開発ツールで作っても作り方を間違えていたり、
 そのツールにふさわしい作り方をしていなければ、
 パフォーマンスの悪いアプリケーションになります。

 具体的に、どこをどのようしすればよいかは、作者
 でないと分からない可能性があります。

 そのことをよくまとめているサイトがありました。

  Office TANAKA
  1. 表示を止めろ!
  2. Selectするな!
  3. 余計なことはするな!
  4. 何度も同じことを言わせるな!
  5. 個別に呼ぶな!
  6. タイプを指定しろ!
  7. 名前で呼ぶな!
  8. 標準のプロパティ
  9. 関数も使え!
  10. セルの指定方法
  11. セルを配列に入れる
  12. 文字列型関数を使う

 ここの内容はとても参考になります。

原因4.Excelの仕様上の問題

3つのカラクリがあります。
  • メモリー消費が多くなるカラクリ
  • 再計算処理のカラクリ
  • ファイルアクセスのカラクリ

  • メモリー消費が多くなるカラクリ
シートは列×行の大きさによって、展開するメモリーの使用量が変化します。
 これは、面積の公式(横×縦)と同じですので、面積が広ければ広いほど、
 必要になるメモリーも多くなります。

 行の扱い方は、実値です。
 実際にセルの書式や値が設定されている最終行までが有効範囲になります。

 列の扱い方は、予約値です。
 実際にセルの書式や値が設定されている最大列までが有効範囲になります。
 これは、最終行の最終列ではなく、最終行までの間に使われている最大列を
 列の最大列としているためです。

 ※ 列数が大きさに比例して、使用するメモリー量が増加します。


  • 再計算処理のカラクリ
さらに、シート数が増えると遅くなります。

 セル、条件付書式、入力規則、名前定義

 これらには、数式を設定できます。

 また、グラフ表示がある場合、参照している表の値が変化すると自動的に表示が変わります。

 これらは、再計算処理が動作することで可能になります。



 この再計算処理の標準では、全シートの再計算を行いますのでシート数が増え、数式を扱うセルなどが増加すると、再計算処理に時間がかかるようになり、結果的に遅くなります。


  • ファイルアクセスのカラクリ
セルの値を変更した時、編集中の内容をExcelは、Excelファイルのユーザーの見えない領域に保存します。

 つまり、Excelでの入力や編集作業を行うと、自動的にファイルアクセスが発生していることになります。

 なお、この機能により、Excelが以上終了した時に、Excelファイルを修復することができます。


一般的にメモリ内で処理するより、ハードディスクなどの記憶装置にアクセスする方が処理速度は遅いです。

実行するマクロによっては、これらの要因で実行に時間がかかることがわかります。

2010年4月30日金曜日

Excelのマクロ実行は遅い理由1

Excelが遅いということをよく耳にします。原因は4つあると考えられます。

  1. パソコンのスペック不足
  2. 動作環境の問題
  3. マクロの作り方の問題
  4. Excelの仕様上の問題
原因1.パソコンのスペック不足
 パッケージのREADME.HTM に記載されているシステム要件は
  Excel2003
   CPU: Pentium 233MHz以上(PentiumⅢを推奨)
   MEM:128MB以上の実装メモリが必要

  Excel2007
   CPU: PentiumⅢ 500MHz以上
   MEM:256MB以上

 実は、ここに出ているスペックで実装しているパソコンでは遅いです。

このような情報にはトラップが隠されています。
それは、WindowsOSが必要としているスペックのその上のスペックが必要に
なることを理解しておく必要があります。

 マイクロソフトのサイトに記載されているシステム要件は
  WindowsXP SP2のシステム要件
   
 CPU:Pentium 233MHz以上
  MEM:64MB以上

  Windows7のシステム要件
   
 CPU:1GHz以上
  MEM:1GB以上

 ここに出ているスペックは、動くことができる最低限のスペックです。
 サクサク動く、きびきび動くを考えると、やはりスペック不足です。

 仮に、Excelとメールのブラウザ以外は使用しないならば、
  WindowsXP の場合は、CPU:1GHz以上、MEM:1GB以上がいいです。
  Windows7 の場合は、CPU:2GHz以上、MEM:1.5GB以上がいいです。


原因2.動作環境の問題
 それば、ビデオカードの機能です。

 ビデオカードの機能は、一体型と、拡張カード型があります。

 拡張カード型の場合は、ほとんど問題ありません。
 しかし、一体型は、メモリを共有していることがおおいので、
 OSが使用できるメモリが少なくなります。

 また、ビデオカードの性能が旧世代の場合があり、画面への表示が遅い場合があります。

 このような点から、使用しているパソコンのスペックを確認し、
 また、購入時のスペックを決める参考にして欲しいと思います。

ありがとうございます。
清水@ins