VBA|PrintPreview(印刷プレビュー)が遅いときの対処方法

エクセルVBA VBAでウインドウ関連の操作



エクセルは、表示されている画面と実際に印刷するときの位置がずれることが多いため、PrintPreviewメソッドを使って印刷プレビューで確認する機会が多いと思います。

ですが、PrintPreviewを実行しても動作が遅くなることがあるとの声が多いのです。

そこで今回は、PrintPreviewメソッドを実行して際に動作が遅くなるときの対処方法について徹底的に説明していきます。



PrintPreview(印刷プレビュー)が遅いときの対処方法

PrintPreviewの動作が遅い原因は、以下のようにさまざまなものが挙げられます。

  • ハードウェアグラフィックアクセラレータを無効にする
  • ページ区切りの表示をFalseにする
  • 印刷プレビュー実行後のアクティブになるワークシートが不定になっている

それぞれについて解説していきます。

ハードウェアグラフィックアクセラレータを無効にする

ハードウェアグラフィックアクセラレータとは、簡単に言うとパソコンのグラフィック処理を担当する装置です。

じつは、このハードウェアグラフィックアクセラレータを無効にすることで処理速度が改善することがあるのです。

設定方法は以下の通りです。

1.エクセルの画面で左上の「ファイル」をクリックする。

2.左下にある「オプション」をクリックする。

3.「詳細設定」の「ハードウェアグラフィックアクセラレータを無効にする」にチェックを入れる。

これでハードウェアグラフィックアクセラレータを無効にすることができました。

ページ区切りの表示をFalseにする

PrintPreviewメソッドを実行すると、ワークシート上に自動的にページ区切りの点線が表示がされます。

このページ区切りを表示させないことで印刷プレビューの速度が上昇することがあります。

その方法は、 PrintPreviewメソッド以降に、 DisplayPageBreaks = False を記述します。

具体的には、以下のサンプルコードのように記述します。

Sub プレビュー()
    ActiveSheet.PrintPreview
    ActiveSheet.DisplayPageBreaks = False
End Sub

DisplayPageBreaks プロパティは、Trueの場合には指定されたワークシートの改ページ (自動と手動) が表示されます。 Falseの場合には、改ページの区切りが表示されなくなりますので、その分速度が向上することになります。

印刷プレビュー実行後のアクティブになるワークシートが不定になっている

印刷プレビューを実行しようとしたときにアクティブになっているワークシートと違うワークシートの印刷プレビューを実行したときに速度が遅くなったり、固まってしまったりする場合があります。

例えば、
Sheet1がアクティブになっている時に、
Sheet2.PrintPreviewを実行

このような場合、 PrintPreview(印刷プレビュー)を実行後、印刷プレビューの画面を閉じると、どのワークシートをアクティブにするか不定になってしまい、結果的に速度が遅くなったり固まったりしてしまう事があります。

したがって、印刷プレビュー実行後にアクティブにするワークシートは、必ず明示的に指定しておいた方が良いです。

例えば、
Sheet2.PrintPreview
Sheet1.Activate
のようにすることで、余計な問題が生じずにすみます。

【まとめ】PrintPreview(印刷プレビュー)が遅いときの対処方法

PrintPreview(印刷プレビュー)が遅いときの原因として

  • ハードウェアグラフィックアクセラレータを無効にする
  • ページ区切りの表示をFalseにする
  • 印刷プレビュー実行後のアクティブになるワークシートが不定になっている

が挙げられました。

それらを改善することで速度の改善がみられる場合があります。

エクセルとVBAでは、PrintPreviewは必須ですし、速度を早くすることも重要な要素の一つですので、今回の対処方法をぜひ覚えておいてくださいね。

参考:Excel VBA入門 その64:PrintPreview(印刷プレビュー)すると フリーズになるときの対処方法

コメント

  1. […] 参考:Excel VBA入門 その59:PrintPreview(印刷プレビュー)が遅いときの対処方法 […]

タイトルとURLをコピーしました