ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE ひまわりExcel拡張パック /のえる (02/03/03(Sun) 19:09) [557]
......MESSAGE 感想:実用的! /クジラ飛行机 (02/03/03(Sun) 19:55) [558]
............MESSAGE Re[2]: 感想:実用的! /のえる (02/03/04(Mon) 03:02) [560]


親記事 / ▼[ 558 ]
NO.557  ひまわりExcel拡張パック
□投稿者/ のえる -(2002/03/03(Sun) 19:09:56)
□U R L/ http://members.tripod.co.jp/~my_tears/
{---プログラム掲示板投稿フォーム---

【ソフト名】ひまわり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に、エクセル設定。

  )

)

エクセルステータスバー解放。

エクセル更新再開

あと=今。

あとと、はじめの、秒差。

「{それ}秒かかりました」を、言う。

戻る。




▲[ 557 ] / ▼[ 560 ]
NO.558  感想:実用的!
□投稿者/ クジラ飛行机 -(2002/03/03(Sun) 19:55:44)
□U R L/ http://www.text2music.com
おぉ、これは、実用的ですね。
仕事モードのユーザーにとって、強い見方になりそうです。



▲[ 558 ] / 返信無し
NO.560  Re[2]: 感想:実用的!
□投稿者/ のえる -(2002/03/04(Mon) 03:02:43)
□U R L/ http://members.tripod.co.jp/~my_tears/
うに(<- あ、わたし的な挨拶です。お気に召さない方がおられたら、遠慮なく言ってください)。

とっても、仕事モードだったんです(T_T。
テキストファイルを読み込むのに、VBA使っても良かったんですが、
マクロがうるさいので、ひまわりでしようと思ったんです。
 実際は、非力なノートパソコンでの使用を考えているので、
かなり効果はあると見込んでいます。

PowerPointの操作は、Delphiで書きましたけど、せっかくエクセルなので、ひまわりでしようと(^−^
ひまわりのおかげで、私の仕事もはかどりそうです。ありがとうございます。




- Child Tree -