SHOJI's Code
仕事や趣味で書いた各種言語のプログラミングコード(エクセルVBA,PHP,C/C++,JavaScript等)、その他雑記。
アクセスアップ・SEO対策・検索エンジン登録
2008.06<<12345678910111213141516171819202122232425262728293031>>2008.08
ScreenUpdating, EnableCalculation の効果 (EXCEL VBA)
何かを演算するなどして、シートにデータを展開するときに、Application.ScreenUpdatingやEnableCalculationで一時的に画面更新や再計算を抑制したときにどれだけ効果が出るか試してみた。

と、あるベンチマーク的なプロシージャの実行時間の結果を以下に示す。
方法実行時間
何もせず5.215秒
EnableCalculation=False0.831秒
ScreenUpdating=FALSE0.633秒
両方0.338秒


これから行くと、ScreenUpdatingとEnableCalculation両方をFALSEにした方が良いということになる。
少なくとも、何もしないよりは格段に効果があることになる。
何もしない場合に極端に時間がかかるのは、どこかが変わると一気に残りの箇所(ここで使用したプロシージャだと999箇所)の再計算が始まってしまうからである。

・・・と、いうことならデータをセットする前にクリアする方が早いのか?
[ScreenUpdating, EnableCalculation の効果 (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
完全全画面表示 (EXCEL VBA)
以前、「ツールバーをすべて消す」などの記事を書いたが、それをもうちょっと進めてみた・・・ま、ちょっとしたお遊び(^^)
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っぽくないアプリを作りたいときは良いかも(^^)
テーマ:Excel - ジャンル:コンピュータ
ADOを使ってCSVファイルをシートに読みこみ (EXCEL VBA)
以前の記事に関連することになるが、CSVファイルをシートに読み込む手法としてADOも使えそうなので使ってみることにした。前の記事の手法と速度的なものを比べてみたが、若干こちらの方が遅いけどあまり差異はない。
[ADOを使ってCSVファイルをシートに読みこみ (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
アシスタントを使ってみる (EXCEL VBA)
Officeアシスタントでちょっと遊んでみた。
[アシスタントを使ってみる (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
ファイルの一覧をセルにセットする (EXCEL VBA)
ちょっとお遊び。

FileSystemObjectを使って、ファイルの一覧をEXCELのセルにセットしてみる。
[ファイルの一覧をセルにセットする (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
CSVファイルを表示することなくシートに読みこみ (EXCEL VBA)
CSVはテキストで扱いやすいので別システムなどでデータをCSV形式で保存することがよくある。そのCSVを読みこみ、帳票として整形するのだが、リンクはしたくないので、マクロで一旦CSVを開き、帳票用のエクセルファイルの特定のシートに丸ごとコピーし、それを参照して使うのが私の定石である。が、不満があった。CSVを読み込む様子が表示されてしまうことである。

それは、美しくない・・・。

ということでちょっと考えてみた。
[CSVファイルを表示することなくシートに読みこみ (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
Workbook_Openをスキップ (EXCEL VBA)
仕事で帳票用のEXCELファイルを作成した。Workbook_Openで必要なCSVを開き、シートに展開し、印刷プレビューを表示する、というものだ。
で、実機は警告なしにマクロが実行されるよう、セキュリティが低く設定してある。
そうすると、そのEXCELファイルを編集しようと開いても、自動的にマクロが実行させてしまう。

それは、都合が悪い・・・。

ということで、
[Workbook_Openをスキップ (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
印刷プレビューを表示する (EXCEL VBA)
別にここに書くほどのことではないのだが、あるシステムで「印刷表示」と仕様書に書いてあり、どのようにしようか、と思ったときにこの方法を思いついた。
つまり、印刷表示ボタンを押したときにEXCELからマクロを使用して印刷プレビューを表示し、印刷プレビューから抜けたらそのまま終わる。そうすれば、印刷イメージは確認できるし、オペレータが不用意にEXCEL上のデータを書き換えてしまうことも無い。
もう一つの理由はExcel2007になって前のような方法でツールバーが消せなくなってしまったこともある。
[印刷プレビューを表示する (EXCEL VBA)]の続きを読む
テーマ:Excel - ジャンル:コンピュータ
Unload Me! (EXCEL VBA)
ずっと勘違いしていた・・・。

EXCELVBAでフォームを使ったりすることがあるが、そのフォーム上のボタンで「Unload Me」は使えないものと思っていた。さらに「Unload Me」より後ろには命令は書けないものと思っていた。

「Unload Me」自体もしくはその後ろも「Unload Me」により破棄されて、実行できなくなる、と思っていたからである。

で、なんとなく書いてみたら普通に動くじゃん(-.-; ってか、フォームを表示する前でも UserForm1.CommandButton1.Caption なんかが取得できてるじゃん。

なーんだ(-.-;
テーマ:Excel - ジャンル:コンピュータ
copyright © 2004-2006 SHOJI, Powered By FC2ブログ all rights reserved.
無料ホームページ アフィリエイト レンタルサーバー FC2ブログ 一戸建て