[117] 列幅の設定値を取得・反映・保存する方法
枕糊 [2008/07/16 17:38:49]
何年か振りにCSVをいじることになり、ネットから入手できるCSVエディタを幾つか比較検討した結果、
以前使っていたものを捨て(笑)、これを常用することに決めました。
軽快な動作、連続データ入力、掲示板での対応の細やかさに惚れました。
セルの表示幅に収まり切らない文字列をポップアップで表示してくれるのも嬉しいです。
自分は機械設定の列幅にはどうにも満足できない質でして、
閲覧・編集の都合で、毎回、手動で、微妙に調整してから作業を始めるのですが、面倒でした。
マクロで実現可能かと思われましたが、管見の限り見つからなかったので、
このエディタ以外に道は無いと奮起し、知識もないのに初めてマクロを作ってみました。
http://www.dotup.org/uploda/www.dotup.org0488.lzh.html
問題点などあれば御叱正くださると助かります。
Re: [117] 列幅の設定値を取得・反映・保存する方法
枕糊 [2008/07/16 18:20:58]
説明不足な気がするので補足します。以下のような使途を想定しています。
1) 先ず手動で自分好みの列幅に調整する。
2) 終了時に列幅を取得して2行目に置いたまま保存しておく。
3) 再開時には2行目に列幅の値が置いてあるのでそのまま反映させる。
4) 編集・閲覧の邪魔になる時は2行目を削除してしまう。
5) 2) に戻る。
設定値の保存に使う行は、2行目でなく任意の行でいいんですけど、
1行目には項目名があることが多いと思うので、ヘッダー感覚で
2行目に設定値があって、3行目以降に実データが来るとスマートかなあ、と思っただけのことです。
Re: [117] 列幅の設定値を取得・反映・保存する方法
あすかぜ [2008/07/16 22:58:56]
書き込みありがとうございます。励みになります。
マクロ拝見しました。
意図した動作はほぼ問題なくできているようですね。
1点だけ問題点ですが、反映のマクロの20行目が
SetColWidthではなくGetColWidthになっているため、
一番右の列の列幅の反映ができていないようです。
この点をこちらで修正して、
http://www.asukaze.net/soft/cassava/macro/
にアップしました。
公開に問題などあればご連絡お願いします。
わからないことなどあれば気軽に聞いてください。
よろしくお願いします。
Re: [117] 列幅の設定値を取得・反映・保存する方法
枕糊 [2008/07/16 23:15:19]
ありゃ、コピペミスですか、恥ずかしい。
御指摘ありがとうございました。
拙作が公開に値するかどうか甚だ疑問ですが、煮るなり焼くなり好きにしてください。
今後も末永くよろしくおねがいします。
Re: [117] 列幅の設定値を取得・反映・保存する方法
枕糊 [2008/07/17 00:14:03]
嗚呼、中学生の頃から直っていないスペルミスをやらかしてます。
あまりにも恥ずかしいので公開されるファイルはこちらに変更してくださいませ。
コメント文を多少追加しました。
http://www.dotup.org/uploda/www.dotup.org1015.lzh.html
現在、メールが使えない状況でして、ダウンロードに御面倒をお掛けして申し訳ありません。
初めてマクロを作成するにあたり、ishiさんの応用利用研究室には多大な恩恵を受けました、
この場を借りて深く感謝します。
度々の長文連投ですみません。
Re: [117] 列幅の設定値を取得・反映・保存する方法
あすかぜ [2008/07/17 00:57:23]
ありがとうございます。
新しいファイルで更新しました。
ご確認ください。
Re: [117] 列幅の設定値を取得・反映・保存する方法
枕糊 [2008/07/18 05:46:03]
更新を確認しました。多謝。
うっかりブラウザの戻るボタンを押して連投してしまいました、削除に感謝します。
それから先頭の記事で「ツールチップ」を「ポップアップ」と誤っています、訂正しておきます。
報告です。
全ての列を画面内一杯に表示する、邪魔くさい水平スクロールバーはなるべく表示させない、
というのが自分の理想なので、ダミーの空列に充てる幅を減らすのにマクロを書いてみました。
str = Right ;
str = str + 1 ;
SetColWidth ( str , 12 ) ;
質問です。
「全ての列を画面内に表示」を実行しても、思うようにならないことが屡々あります。
標準の列幅「64」の半分「32」より狭くしてはくれないようです。
このコマンドは水平スクロールバーを表示しないようにするためのものではないのでしょうか。
Re: [117] 列幅の設定値を取得・反映・保存する方法
あすかぜ [2008/07/18 21:15:38]
ダミーの空列は邪魔に感じる人も多そうですね。
当面はダミー列の扱いは変えないと思うので、そのマクロなどでしのいでください。
ちなみに、変数に代入したりせずに、
SetColWidth(Right+1, 12);
だけでも大丈夫ですよ。
質問の方は、長くなってきたので
http://www.asukaze.net/soft/cassava/bbs/index.cgi?t=118
に新しいスレッドを立てました。
Re: [117] 列幅の設定値を取得・反映・保存する方法
枕糊 [2008/07/18 21:44:35]
なるべく実情報の表示に使う領域を増やしたいと考えているだけでして、
空行・空列を不要に感じているわけではありませんので、誤解のなきように。
マクロですが、当方の環境では
「Right+1」を数値の加算でなく文字列の結合としてしまうらしく、
「グリッドインデックス が範囲を超えています」と連れなくされましたので、
まわりくどい書き方をしてみました。
半角スペースを多用するスタイルが悪さしているのかとも思いましたが、違うようです。
Re: [117] 列幅の設定値を取得・反映・保存する方法
あすかぜ [2008/07/18 22:23:36]
Right+1 が文字列の結合になってしまうのを確認しました。
一度変数に入れると数値になるのも不思議ですが。。。
そのうち調査します。
SetColWidth(int(Right) + 1, 12);
のような回避方法もありますが、これも読みにくいですね。
Re: [117] 列幅の設定値を取得・反映・保存する方法
あすかぜ [2008/07/19 23:42:22]
Ver.1.5.7 で、Right などに対する「+」演算が文字列連結ではなく加算となるように修正しました。
http://www.asukaze.net/soft/cassava/bbs/index.cgi?t=122
Cassava マクロは、文字列と数値の扱いが微妙なんですよね。なにかと問題が多いです。