何かを演算するなどして、シートにデータを展開するときに、Application.ScreenUpdatingやEnableCalculationで一時的に画面更新や再計算を抑制したときにどれだけ効果が出るか試してみた。
と、あるベンチマーク的なプロシージャの実行時間の結果を以下に示す。
これから行くと、ScreenUpdatingとEnableCalculation両方をFALSEにした方が良いということになる。
少なくとも、何もしないよりは格段に効果があることになる。
何もしない場合に極端に時間がかかるのは、どこかが変わると一気に残りの箇所(ここで使用したプロシージャだと999箇所)の再計算が始まってしまうからである。
・・・と、いうことならデータをセットする前にクリアする方が早いのか?
と、あるベンチマーク的なプロシージャの実行時間の結果を以下に示す。
| 方法 | 実行時間 |
|---|---|
| 何もせず | 5.215秒 |
| EnableCalculation=False | 0.831秒 |
| ScreenUpdating=FALSE | 0.633秒 |
| 両方 | 0.338秒 |
これから行くと、ScreenUpdatingとEnableCalculation両方をFALSEにした方が良いということになる。
少なくとも、何もしないよりは格段に効果があることになる。
何もしない場合に極端に時間がかかるのは、どこかが変わると一気に残りの箇所(ここで使用したプロシージャだと999箇所)の再計算が始まってしまうからである。
・・・と、いうことならデータをセットする前にクリアする方が早いのか?
以前、「ツールバーをすべて消す」などの記事を書いたが、それをもうちょっと進めてみた・・・ま、ちょっとしたお遊び(^^)
Trueにしてコールするとタイトルバーもメニューも何もかも消えてしまうので注意。消えちゃったときは、慌てずAlt-F11でVisual Basic Editorを表示して、Falseを指定してコールしなおしましょう。
でも、EXCELでEXCELっぽくないアプリを作りたいときは良いかも(^^)
Sub ShowFullScreen(ByVal b As Boolean)
Dim cb As CommandBar
Dim wb As Workbook
Dim ws As Worksheet
Dim w As Window
Application.DisplayFullScreen = b
Application.DisplayFormulaBar = Not b
Application.DisplayStatusBar = Not b
For Each cb In Application.CommandBars
cb.Enabled = Not b
Next
For Each wb In Application.Workbooks
For Each w In wb.Windows
w.DisplayHeadings = Not b
w.DisplayGridlines = Not b
w.DisplayHorizontalScrollBar = Not b
w.DisplayVerticalScrollBar = Not b
w.DisplayWorkbookTabs = Not b
Next
Next
End Sub
Trueにしてコールするとタイトルバーもメニューも何もかも消えてしまうので注意。消えちゃったときは、慌てずAlt-F11でVisual Basic Editorを表示して、Falseを指定してコールしなおしましょう。
でも、EXCELでEXCELっぽくないアプリを作りたいときは良いかも(^^)
以前の記事に関連することになるが、CSVファイルをシートに読み込む手法としてADOも使えそうなので使ってみることにした。前の記事の手法と速度的なものを比べてみたが、若干こちらの方が遅いけどあまり差異はない。
≫[ADOを使ってCSVファイルをシートに読みこみ (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
|
Officeアシスタントでちょっと遊んでみた。
≫[アシスタントを使ってみる (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
|
ちょっとお遊び。
FileSystemObjectを使って、ファイルの一覧をEXCELのセルにセットしてみる。
FileSystemObjectを使って、ファイルの一覧をEXCELのセルにセットしてみる。
≫[ファイルの一覧をセルにセットする (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
|
CSVはテキストで扱いやすいので別システムなどでデータをCSV形式で保存することがよくある。そのCSVを読みこみ、帳票として整形するのだが、リンクはしたくないので、マクロで一旦CSVを開き、帳票用のエクセルファイルの特定のシートに丸ごとコピーし、それを参照して使うのが私の定石である。が、不満があった。CSVを読み込む様子が表示されてしまうことである。
それは、美しくない・・・。
ということでちょっと考えてみた。
それは、美しくない・・・。
ということでちょっと考えてみた。
≫[CSVファイルを表示することなくシートに読みこみ (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
|
仕事で帳票用のEXCELファイルを作成した。Workbook_Openで必要なCSVを開き、シートに展開し、印刷プレビューを表示する、というものだ。
で、実機は警告なしにマクロが実行されるよう、セキュリティが低く設定してある。
そうすると、そのEXCELファイルを編集しようと開いても、自動的にマクロが実行させてしまう。
それは、都合が悪い・・・。
ということで、
で、実機は警告なしにマクロが実行されるよう、セキュリティが低く設定してある。
そうすると、そのEXCELファイルを編集しようと開いても、自動的にマクロが実行させてしまう。
それは、都合が悪い・・・。
ということで、
≫[Workbook_Openをスキップ (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
|
別にここに書くほどのことではないのだが、あるシステムで「印刷表示」と仕様書に書いてあり、どのようにしようか、と思ったときにこの方法を思いついた。
つまり、印刷表示ボタンを押したときにEXCELからマクロを使用して印刷プレビューを表示し、印刷プレビューから抜けたらそのまま終わる。そうすれば、印刷イメージは確認できるし、オペレータが不用意にEXCEL上のデータを書き換えてしまうことも無い。
もう一つの理由はExcel2007になって前のような方法でツールバーが消せなくなってしまったこともある。
つまり、印刷表示ボタンを押したときにEXCELからマクロを使用して印刷プレビューを表示し、印刷プレビューから抜けたらそのまま終わる。そうすれば、印刷イメージは確認できるし、オペレータが不用意にEXCEL上のデータを書き換えてしまうことも無い。
もう一つの理由はExcel2007になって前のような方法でツールバーが消せなくなってしまったこともある。
≫[印刷プレビューを表示する (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
|
SHOJI's Code






