{---プログラム掲示板投稿フォーム---
【ソフト名】ひまわりExcel拡張パック (バージョン 1.00)
【作 成 者】のえる (連絡先:my_tears@rose.freemail.ne.jp)
【種 別】フリーソフトウェア
【ひまわりのバージョン】ver.1.30で動作確認
【転 載】可 (下記、コメント欄参照)
【改変運用】可 (ただのサンプルなので)
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】有 (moreExcel.dll、MS Excel97にて動作確認)
【コメント】
注)実行には、別途ここ(http://members.tripod.co.jp/~my_tears/)で
配布しているmoreExcel.dllが必要です。
ひまわりでのエクセル操作に、もうちょっとだけ機能を追加します。
エクセルのセルへ、値を大量に代入したりする場合には、表示の更新を
一度止めておいて、全て終わった後に更新再開を行った方が、より早く
処理を実行できます。また、更新を止めてしまうと、進行状況が解らない
ので、エクセルのステータスバーを使用する場合が多いです。
ひまわりExcel拡張パックを使用することで、これらのことが可能になります。
ちなみに、私のパソコンで、本サンプルを動かしてみたところ、
┏ 自動更新あり:6秒 ┓
┗ 自動更新なし:3秒 ┛
という結果でした。おそらく、パワーのないマシンなら、より差が明確になる
と思います。
なお、エクセルステータスバー設定を、頻繁に呼びすぎることは、内部の
オーバーヘッド(Excelを探す処理)が、比較的大きいため、おすすめできません。
このオーバーヘッドは、DLLへの実装方法によるものです。関数を呼ぶたびに、
1度、Excelを探しています。よって、本DLLに含まれている関数は、いずれも、
少なくとも同量のオーバーヘッドを含んでいます。
それでも、これだけの量を代入する場合は、早いということで、私自身は、
納得していますので、変更の予定はありません。
よって、使用するべきかどうかは、実際に試してみるのが一番でしょう。
【使用する方法】
本ファイル(著作権確保のためのみ)と、moreExcel.dllを、hmwと
同じフォルダ、もしくは、himawari本体のあるフォルダ内に、コピーして
ください。その後、実際に関数を使用したいhmwファイルに、以下のDLL宣言を、
コピーしてください。
'---moreExcel.dllのDLL宣言---
『moreExcel.dll』の、「ExcelStopAutoRefresh()」を、「エクセル更新停止」で、DLL宣言。
『moreExcel.dll』の、「ExcelStartAutoRefresh()」を、「エクセル更新再開」で、DLL宣言。
『moreExcel.dll』の、「ExcelGetStatusBarVisible()」を、「エクセルステータスバー有無」で、DLL宣言。
『moreExcel.dll』の、「ExcelSetStatusBarVisible()」を、「エクセルステータスバー表示」で、DLL宣言。
『moreExcel.dll』の、「ExcelSetStatusBarInvisible()」を、「エクセルステータスバー非表示」で、DLL宣言。
『moreExcel.dll』の、「ExcelSetStatusBarText(?を,)」を、「エクセルステータスバー設定」で、DLL宣言。
『moreExcel.dll』の、「ExcelReleaseStatusBar()」を、「エクセルステータスバー解放」で、DLL宣言。
'エクセルステータスバー設定行った場合は、必ず、エクセルステータスバー解放を呼んでください。
'でないと、それ以降、エクセルがステータスバーを使用できません。
'----ここまでmoreExcel.dllのDLL宣言---
[関数]
┏(1) エクセル更新停止:画面表示を停止させることで、実行速度が上がります。
┗(2) エクセル更新再開:停止させた更新を、再開します。再開しないと、画面が
いつまでも更新されません。
(3) エクセルステータスバー有無:エクセルにステータスバーが表示されて
いるかどうかを、[はい|いいえ]で返します。
(4) エクセルステータスバー表示:エクセルにステータスバーを、表示させます。
(5) エクセルステータスバー非表示:エクセルのステータスバーを、非表示にします。
┏(6) エクセルステータスバー設定:エクセルのステータスバーに、指定テキストを
┃ 表示します。
┗(7) エクセルステータスバー解放:エクセルのステータスバーを、エクセル自身に
返します。(6)を行ったのに、これを行わないと、エクセルがステータスバー
を使用できなくなります。
ファイルの転載条件は、
(1) 作者(私ですが)に事前にメールなどで連絡し、承諾を得ること。
(2) 書庫を改変しないこと
です。
そうそう、本ファイルなどを用いた事による、いかなる問題が生じても、
私はいっさいの責任を持ちませんので、あくまでも自己責任でどうぞ。
問題がある場合は、連絡いただければ、検討します(なおるかどうかは
解りませんけど(^-^)
あと、お暇な人は、お越しください(^-^。最新版があるかもしれません。
URL : http://members.tripod.co.jp/~my_tears/
[history]
v1.00 1.基本的な部分を作成。
---投稿フォームここまで---}
'---moreExcel.dllのDLL宣言---
『moreExcel.dll』の、「ExcelStopAutoRefresh()」を、「エクセル更新停止」で、DLL宣言。
『moreExcel.dll』の、「ExcelStartAutoRefresh()」を、「エクセル更新再開」で、DLL宣言。
'エクセルのステータスバーについて。
『moreExcel.dll』の、「ExcelGetStatusBarVisible()」を、「エクセルステータスバー有無」で、DLL宣言。
『moreExcel.dll』の、「ExcelSetStatusBarVisible()」を、「エクセルステータスバー表示」で、DLL宣言。
『moreExcel.dll』の、「ExcelSetStatusBarInvisible()」を、「エクセルステータスバー非表示」で、DLL宣言。
『moreExcel.dll』の、「ExcelSetStatusBarText(?を,)」を、「エクセルステータスバー設定」で、DLL宣言。
『moreExcel.dll』の、「ExcelReleaseStatusBar()」を、「エクセルステータスバー解放」で、DLL宣言。
'エクセルステータスバー設定行った場合は、必ず、エクセルステータスバー解放を呼んでください。
'でないと、それ以降、エクセルがステータスバーを使用できません。
'----ここまで宣言---
'以下、動作確認サンプル。
'ベンチマークループ最大値
XMAX=20 {0 < XMAX < 255}
YMAX=100 {0 < YMAX < 65535}
エクセル起動。
*ステータスバーテスト
エクセルステータスバー有無。
それで、条件分岐。
はいの時、「ステータスバーはすでに表示されています」と、言う。
いいえの時、(「ステータスバーは、表示されていません\n」&
「ベンチマークを行っている間は進行状況を表示するために\n」&
「ステータスバーを表示しますが、あとで元に戻しますから、ご心配無く。」と、言う。
非表示だった=はい。)。
-1の時、「ステータスバーの情報は、エラーのため、取得できませんでした」と、言う。
*ベンチマーク
「ベンチマークテストを行いますか?」と、二択。
もし、それ=いいえ、ならば、(エクセル終了。おわり。)。
エクセルステータスバー表示。
「自動更新を止めてベンチマークを行いますか?」と、二択。
もし、それ=いいえ
ならば、自動更新するベンチマークを、呼ぶ。
違えば、自動更新しないベンチマークを、呼ぶ。
'ステータスバーの表示を元に戻しましょう。
もし、非表示だった=はい、ならば、エクセルステータスバー非表示。
おわり。
母艦浮上。
*自動更新するベンチマーク
はじめ=今。
'エクセル更新停止
Iを、0から、XMAXまで、繰り返す(
「ベンチマーク進行中 {I}/{XMAX}」を、エクセルステータスバー設定。
Jを、0から、YMAXまで、繰り返す(
(I,J)を、Iに、エクセル設定。
)
)
エクセルステータスバー解放。
'エクセル更新再開
あと=今。
あとと、はじめの、秒差。
「{それ}秒かかりました」を、言う。
戻る。
*自動更新しないベンチマーク
はじめ=今。
エクセル更新停止
Iを、1から、XMAXまで、繰り返す(
「ベンチマーク進行中 {I}/{XMAX}」を、エクセルステータスバー設定。
Jを、1から、YMAXまで、繰り返す(
(I,J)を、Iに、エクセル設定。
)
)
エクセルステータスバー解放。
エクセル更新再開
あと=今。
あとと、はじめの、秒差。
「{それ}秒かかりました」を、言う。
戻る。
|