○第106回目 エクセルでの複雑な計算システムのチェック
エクセルでの複雑な計算システムのチェックです。
計算内容は入り組んでいて、計算結果はかなりの分量があるという代物です。
チェック結果もまとめ上げて文書化しなければならないので、そのつどメモを取っていく必要があります。
出来立てのほやほやのシステムですので、いろいろなところにエラーがある事が想定されます。
チェックの観点としては、
1.計算式の構成が正しいのかどうかをチェックする。
2.参照しているセルが正しいのかをチェックする。
3.具体的な数字を入れていき、計算結果が正しいのかをチェックする。
4.計算式が、たて、横に正しくコピーされているかどうかをチェックする。
計算式も簡単なものもあれば、長いものもあります。そこで使った手法は、ある範囲内の計算式を文字化してどこかにコピーすると言うことです。それを、テキストエディタに貼り付けて、それをみながらチェックするという方法をとりました。
以前仕様書作成で用いた、列記号を実際の項目名に変換するということも考えたのですが、おおよそは列記号が何を意味するのかはすぐ覚えてしまいので、時間の関係でそこまではしませんでした(この手法を使った場合、事前の準備に時間がかかるので、気分的に避けてしまったというのが本音でしょうか)。
一つの計算式が正しいのが分かると、それが横と下にうまく移っているかどうかをみます。
ここで思ったことは、例えば上と下の式の違いがすぐ分かるようなものはできないということです。通常は、上と下では、行数が一つずつ違うというものではないでしょうか。もしそのようなことであれば、一瞬にして分かるというのはできるのではないかということです。違っていればおかしいぞということになります。
また、次の段階に移っていった時に気がついたことですが、複数の計算式をテキストエディタに移すと、どれがどのセルのものなのかわからなくなってしまいます。セルの座標を付加して文字化した計算式にする必要があるのではないです。XX=XXXXX…というものにするということです。こちらのほうはそれほど難しくないと思います。
説明資料は、視覚的にする必要がありますので、グラフ、図形を主としたものになります。資料作成の段階になると、資料を作るための手法として、役に立つマクロはないか、ということが関心の的になります。
ということが、今回の仕事の中で気がついたことでした。
整理すると、
1.エクセルの計算式を、セル座標ではなく分かりやすい項目名で表すことをもっとスムーズにできないか。
2.計算式が正しく下と横にコピーされているかのチェックができないか(コピーしてみればいいのかもしれませんが…)。
3.計算式を文字化する場合、計算式の入っているセルの座標も付加できないか。
4.グラフの作成、図形の作成、グラフにコメントをつけるの各システムの操作マニュアルが不十分であったので、それらを整備する必要があるのではないか。
5.よく使う図形配置をパターン化し、何種類かのテンプレートを作成したらどうか。
6.計算式で参照されている場所に飛ばすことができないか。場所の与え方は、複数の場所を一度に与えて、その中から選択して移動できるというのはどうか。
7.計算式で参照されている場所の値、計算式を持ってこれないか。
8.6と7のために、計算式から場所の座標が取れないか。100%は難しいだろう。
ということを思いました。
これらのテーマを順番をつけてひとつずつ整理していきたいと思っています(中には対応が非常に簡単なものもあります)。
2009年1月31日土曜日
2009年1月17日土曜日
第105回目 ハイパーコピデルはどのくらい便利なのか?
○第105回目 ハイパーコピデルはどのくらい便利なのか?
□ハイパーコピデルのいいところは何ですか。
=⇒まずは、コピー関係の処理に強いということです。マクロを作っているとき、あの部分を持ってきて、それを修正しようということがあります。そのときのコピーが楽です。
まず、貼付ける場所を決めます。それから、画面を動かしていって、コピーしたところを探していきます。見出しジャンプも効きますから、大きく動かしてその後小さく動かして目的の場所に移動します。目的の場所でエンターキーと矢印キーでコピーもとを指定します。通常は行単位が多いので、上下の矢印キーだけで十分です。範囲を指定後にエンターキーを押すと、元も場所に、コピーもとがコピーされます。画面も元の場所に戻っています。離れているときなどは効果抜群です。
□コピー作業での他の例をあげてみてください。
=⇒ 前の事例の場合ですが、コピーもとから指定することも可能です。これも便利な機能です。つまり、ここにあれをコピーするという場合と、これをあそこにコピーするという場合の両方ができるのです。
文字列をコピーする場合も同じです。コピーの範囲の最初をエンターキーで指定すると、カーソルが自動的に右に動いていきます。短いものならばそれを止めて微調整で範囲の指定ができます。もちろん長い文字列の場合もカーソルを止めて矢印キーで範囲指定できます。
また、同じ操作で、*を押すことによって、移動にもなります。
単にその行をコピーしたいときは、Bを押します。
□今、コピーと移動でしたが、削除はどのようにするのですか。
=⇒削除には、一字一字の削除、範囲削除、文末までの一気削除、一行削除があります。
キー操作としては、Deleteキー、範囲を指定した後でDeleteキー、BackSpaceキー、Tキーです。範囲指定の場合は、Dを押してから範囲を指定し、エンターキーなど(Spaceキー、Deleteキー)で削除するのが普通です。操作は、D、(カーソルが自動的に動く)、矢印キーで範囲を指定、エンターキーとなります。
なお、文末までの削除はBackSpaceキー、一行削除はTのワンタッチです。
□場所が離れている場合便利そうですね。移動の機能で便利なのにはどんなものがありますか。
=⇒よく使うのが見出しジャンプです。操作は、M、(見出し一覧のダイアログが出る)、矢印キーで動かしたい見出しにあわせる、エンターキーとなります。
小さい順位並べると、矢印キー、Home(行頭)、End(行末)、PageUp、Down、1(文頭)、2(文末)となります。また、QXエディタの特徴であるタブ式で複数のファイルの編集ができることに対応して、タブの移動ができます。前のタブヘはF1、後ろのタブヘはF2となります。
違うタブの文字列をコピーすることも基本機能です。
移動関係ではもう一つあります。今までの移動先(大事な操作の時のみ場所を取得)を覚えているので、その一覧表から移動することもできます。移動先一覧表は、F9ででます。ファイル名、行数、その行の内容が出ますので、おおよその見当ができます。
□動かした先の情報の履歴を持っているんですか。履歴という面でほかに何がありますか。
=⇒文字の挿入の機能はありますが、ハイパーコピデルの弱いところです。ワンタッチで入力のダイアログが出ますが、IMEをオフにしているので、漢字入力の場合は、変換キーを押してからとなります。ちょっと手間がかかります(この部分は改良されました)。それを補助する意味合いで、過去に入れた文字列を保存しています(現時点では最大40個)。それを呼び出して再利用ができます。再利用した文字列は一番先頭に来ます。
同様の処理をしているのは、コピー・移動した文字列です。これも再利用ができます。これらは可変な情報なのですが、別に固定した情報も持っています。よく使う文字列を登録して利用しています。これも40個ありますので便利です。
これらの情報は、ファイルに出力していますので、ハイパーコピデルを終了させ、再び動かしても、引き継がれ、終了前と同じように利用可能となります。
補助機能として面白いのが、括弧の挿入です。括弧にはいろいろな種類がありますが、必要なものを登録して、指定した文字列を括弧で囲みます。括弧使いの人は泣いて喜びます。
□操作はどうなんですか。
=⇒基本はワンタッチで、後は矢印キーで指定し、エンターキーです。矢印キーは数回動かしますが、それプラス2タッチでできるということになります。
□囲むということでは他に何かありますか。
=⇒これはもう趣味の領域になりますが、ルビ表示をさせるときがよくあるので、ルビ表示用の文字列で囲むということもしています。その中では、太字にする、上付き文字にする、下付文字にする、割注に入れるなども設定しています。それでひらめきましたが、この中にマクロの関数を入れてみようと思います。例えば、"mid("と",)" で囲むというイメージです。まだ設定数は少ないので、もっと活用できそうです。
□文章を作成する際に、誤変換したものを再変換するということがありますが、この機能はどうなっていますか。
=⇒最初はまったく考えませんでしたが、そのようなニーズもでてきたので、取り入れ
ています。再変換したい文字のところにカーソルをおき、ワンタッチで処理します。文字入力ダイアログにカーソルのあった場所の単語が取り込まれ、変換キーを押すと再変換してくれます。エンターキーで文書に書き込まれ、修正完了となります。文字入力ダイアログが出ているので、文字を追加するとか修正するとか削除するとかも可能となります。
□ほしい文字列がうまく取り込まれないことも考えられますが。
=⇒その通りです。そこで、指定した文字列を入力ダイアログに取り込み、それを再変換、修正するという機能も入れました(この機能はそれほど使われないので、他の機能を追加したことに伴い削除しました)。
□これらの操作もワンタッチなんですか。
=⇒機能呼び出しはワンタッチです。後は変換キー、矢印キーとエンターキーです。
□プログラム作成用としての機能にはほかに何がありますか。
=⇒プログラム作成用のことももちろん考えています。いくつかありますが、便利なのは指定範囲の行頭にコメント行にするために" ''"を挿入する機能です。これの逆の、" ''"をとるというものもあります。デバック行を使ってテストするときなど便利です。あとは、例えばイコールの前後をひっくり返すというのがあります。
pos_fl$[0] = @Filename$ の文を、=を中心にひっくり返します。次のようになります。スペースの問題はありますが、まあまあでしょう。
@Filename$=pos_fl$[0]
これも記号を複数設定できますので、"="だけでなく、自分のニーズに合ったものを設定できます。
また、変数名を取り込むというものもあります。DIM文を範囲指定して処理をします。変数名が取り込まれます。取り込まれた変数名は利用可能となります。最大40個ですので、その範囲で保有ができます。追加すると、先に保有されたものが削除されていきます。また、使った変数名は一番前に移動します。保有している変数名を全部書き出すことができます。これは変数名の保有が一過性であることからです。次にハイパーコピデルを動かし、書き出した変数名を取り込むと再現されます。書き出した変数名を直接修正できますので、不要なものを削除、必要なものを追加できます。この処理はワンタッチとはなりませんでした。もうキーがなくなってしまったからです。具体的には、F6、矢印キーで処理を指定、エンターキー、矢印キーなどで指定、エンターキーとなります。
□最後に、言っておきたい機能をどうぞ。
=⇒このハイパーコピデルの有効性は、ケース・バイ・ケースです。つまり、その人のニーズいかんです。
それでは、最後として、2.5項目ほど取り上げます。
まずは、置換え関係です。検索もありますが、便利なのは置換のほうです。
このように使います。
まず、置き換えたい単語の先頭にカーソルを置きます。そしてワンタッチキー(J)です。すると、カーソルの単語が取得され、入力ダイアログがでてきます。これでよければそのままエンターキー、悪ければ修正してエンターキーです。すると、次は置換え後の文字を指定するダイアログが出ます。初期値は先ほどの置き換えたい文字列です。ここで修正をし、エンターキーです。指定範囲の状態になっているので矢印キーで範囲を設定しエンターキーです。するとその指定範囲内で置換えられます。これは便利です。特にマクロ(プログラム)作成の際です。同様な操作で検索及び検索の続行ができます。それぞれワンタッチです。これらあわせて1.5項目でしょうか。
最後は、このハイパーコピデルの欠点を補うものです。ハイパーコピデルのもとで処理をしているとき、やはり、何回かに1回は、ハイパーコピデルを動かしているのを忘れてしまい、文字を作成するためにキーをたたきます。すると、ハイパーコピデルでのワンタッチキーとなってしまうので、意図しない動きとなってしまいます。その際は、処理がどこへいっているのかわからないことがあるので、その場合は、右クリックからマクロの終了を選びます。
しかし、マクロを終了させるというも芸がありません。そこで、意図せず何かの処理をさせてしまった場合(Tを押すと一行削除になります)、処理を前に戻すという機能はどうでしょうか。
このケースだけでなく、その他の場合のためにも、処理を一回戻すという機能を入れています。あわせて、戻した機能を1回進めるというのも入れています。操作キー、矢印キーで処理を選択、エンターキーという操作です。これも、前回の処理が前に来ていますので、それを知っていると、操作が省略されて、操作キー、エンターキーのツータッチで可能です。
聞くところによると、操作を戻す際の一連の操作の定義することができます。複数の操作を一括して定義できるということです。それを定義すれば、個々の細かい処理がまとめられ、一瞬で元に戻ります。これには対応していませんが、機能を決めて対応すると、さらに便利になると思っています。
長くなりましたので、今回はおしまいにします。
□ハイパーコピデルのいいところは何ですか。
=⇒まずは、コピー関係の処理に強いということです。マクロを作っているとき、あの部分を持ってきて、それを修正しようということがあります。そのときのコピーが楽です。
まず、貼付ける場所を決めます。それから、画面を動かしていって、コピーしたところを探していきます。見出しジャンプも効きますから、大きく動かしてその後小さく動かして目的の場所に移動します。目的の場所でエンターキーと矢印キーでコピーもとを指定します。通常は行単位が多いので、上下の矢印キーだけで十分です。範囲を指定後にエンターキーを押すと、元も場所に、コピーもとがコピーされます。画面も元の場所に戻っています。離れているときなどは効果抜群です。
□コピー作業での他の例をあげてみてください。
=⇒ 前の事例の場合ですが、コピーもとから指定することも可能です。これも便利な機能です。つまり、ここにあれをコピーするという場合と、これをあそこにコピーするという場合の両方ができるのです。
文字列をコピーする場合も同じです。コピーの範囲の最初をエンターキーで指定すると、カーソルが自動的に右に動いていきます。短いものならばそれを止めて微調整で範囲の指定ができます。もちろん長い文字列の場合もカーソルを止めて矢印キーで範囲指定できます。
また、同じ操作で、*を押すことによって、移動にもなります。
単にその行をコピーしたいときは、Bを押します。
□今、コピーと移動でしたが、削除はどのようにするのですか。
=⇒削除には、一字一字の削除、範囲削除、文末までの一気削除、一行削除があります。
キー操作としては、Deleteキー、範囲を指定した後でDeleteキー、BackSpaceキー、Tキーです。範囲指定の場合は、Dを押してから範囲を指定し、エンターキーなど(Spaceキー、Deleteキー)で削除するのが普通です。操作は、D、(カーソルが自動的に動く)、矢印キーで範囲を指定、エンターキーとなります。
なお、文末までの削除はBackSpaceキー、一行削除はTのワンタッチです。
□場所が離れている場合便利そうですね。移動の機能で便利なのにはどんなものがありますか。
=⇒よく使うのが見出しジャンプです。操作は、M、(見出し一覧のダイアログが出る)、矢印キーで動かしたい見出しにあわせる、エンターキーとなります。
小さい順位並べると、矢印キー、Home(行頭)、End(行末)、PageUp、Down、1(文頭)、2(文末)となります。また、QXエディタの特徴であるタブ式で複数のファイルの編集ができることに対応して、タブの移動ができます。前のタブヘはF1、後ろのタブヘはF2となります。
違うタブの文字列をコピーすることも基本機能です。
移動関係ではもう一つあります。今までの移動先(大事な操作の時のみ場所を取得)を覚えているので、その一覧表から移動することもできます。移動先一覧表は、F9ででます。ファイル名、行数、その行の内容が出ますので、おおよその見当ができます。
□動かした先の情報の履歴を持っているんですか。履歴という面でほかに何がありますか。
=⇒文字の挿入の機能はありますが、ハイパーコピデルの弱いところです。ワンタッチで入力のダイアログが出ますが、IMEをオフにしているので、漢字入力の場合は、変換キーを押してからとなります。ちょっと手間がかかります(この部分は改良されました)。それを補助する意味合いで、過去に入れた文字列を保存しています(現時点では最大40個)。それを呼び出して再利用ができます。再利用した文字列は一番先頭に来ます。
同様の処理をしているのは、コピー・移動した文字列です。これも再利用ができます。これらは可変な情報なのですが、別に固定した情報も持っています。よく使う文字列を登録して利用しています。これも40個ありますので便利です。
これらの情報は、ファイルに出力していますので、ハイパーコピデルを終了させ、再び動かしても、引き継がれ、終了前と同じように利用可能となります。
補助機能として面白いのが、括弧の挿入です。括弧にはいろいろな種類がありますが、必要なものを登録して、指定した文字列を括弧で囲みます。括弧使いの人は泣いて喜びます。
□操作はどうなんですか。
=⇒基本はワンタッチで、後は矢印キーで指定し、エンターキーです。矢印キーは数回動かしますが、それプラス2タッチでできるということになります。
□囲むということでは他に何かありますか。
=⇒これはもう趣味の領域になりますが、ルビ表示をさせるときがよくあるので、ルビ表示用の文字列で囲むということもしています。その中では、太字にする、上付き文字にする、下付文字にする、割注に入れるなども設定しています。それでひらめきましたが、この中にマクロの関数を入れてみようと思います。例えば、"mid("と",)" で囲むというイメージです。まだ設定数は少ないので、もっと活用できそうです。
□文章を作成する際に、誤変換したものを再変換するということがありますが、この機能はどうなっていますか。
=⇒最初はまったく考えませんでしたが、そのようなニーズもでてきたので、取り入れ
ています。再変換したい文字のところにカーソルをおき、ワンタッチで処理します。文字入力ダイアログにカーソルのあった場所の単語が取り込まれ、変換キーを押すと再変換してくれます。エンターキーで文書に書き込まれ、修正完了となります。文字入力ダイアログが出ているので、文字を追加するとか修正するとか削除するとかも可能となります。
□ほしい文字列がうまく取り込まれないことも考えられますが。
=⇒その通りです。そこで、指定した文字列を入力ダイアログに取り込み、それを再変換、修正するという機能も入れました(この機能はそれほど使われないので、他の機能を追加したことに伴い削除しました)。
□これらの操作もワンタッチなんですか。
=⇒機能呼び出しはワンタッチです。後は変換キー、矢印キーとエンターキーです。
□プログラム作成用としての機能にはほかに何がありますか。
=⇒プログラム作成用のことももちろん考えています。いくつかありますが、便利なのは指定範囲の行頭にコメント行にするために" ''"を挿入する機能です。これの逆の、" ''"をとるというものもあります。デバック行を使ってテストするときなど便利です。あとは、例えばイコールの前後をひっくり返すというのがあります。
pos_fl$[0] = @Filename$ の文を、=を中心にひっくり返します。次のようになります。スペースの問題はありますが、まあまあでしょう。
@Filename$=pos_fl$[0]
これも記号を複数設定できますので、"="だけでなく、自分のニーズに合ったものを設定できます。
また、変数名を取り込むというものもあります。DIM文を範囲指定して処理をします。変数名が取り込まれます。取り込まれた変数名は利用可能となります。最大40個ですので、その範囲で保有ができます。追加すると、先に保有されたものが削除されていきます。また、使った変数名は一番前に移動します。保有している変数名を全部書き出すことができます。これは変数名の保有が一過性であることからです。次にハイパーコピデルを動かし、書き出した変数名を取り込むと再現されます。書き出した変数名を直接修正できますので、不要なものを削除、必要なものを追加できます。この処理はワンタッチとはなりませんでした。もうキーがなくなってしまったからです。具体的には、F6、矢印キーで処理を指定、エンターキー、矢印キーなどで指定、エンターキーとなります。
□最後に、言っておきたい機能をどうぞ。
=⇒このハイパーコピデルの有効性は、ケース・バイ・ケースです。つまり、その人のニーズいかんです。
それでは、最後として、2.5項目ほど取り上げます。
まずは、置換え関係です。検索もありますが、便利なのは置換のほうです。
このように使います。
まず、置き換えたい単語の先頭にカーソルを置きます。そしてワンタッチキー(J)です。すると、カーソルの単語が取得され、入力ダイアログがでてきます。これでよければそのままエンターキー、悪ければ修正してエンターキーです。すると、次は置換え後の文字を指定するダイアログが出ます。初期値は先ほどの置き換えたい文字列です。ここで修正をし、エンターキーです。指定範囲の状態になっているので矢印キーで範囲を設定しエンターキーです。するとその指定範囲内で置換えられます。これは便利です。特にマクロ(プログラム)作成の際です。同様な操作で検索及び検索の続行ができます。それぞれワンタッチです。これらあわせて1.5項目でしょうか。
最後は、このハイパーコピデルの欠点を補うものです。ハイパーコピデルのもとで処理をしているとき、やはり、何回かに1回は、ハイパーコピデルを動かしているのを忘れてしまい、文字を作成するためにキーをたたきます。すると、ハイパーコピデルでのワンタッチキーとなってしまうので、意図しない動きとなってしまいます。その際は、処理がどこへいっているのかわからないことがあるので、その場合は、右クリックからマクロの終了を選びます。
しかし、マクロを終了させるというも芸がありません。そこで、意図せず何かの処理をさせてしまった場合(Tを押すと一行削除になります)、処理を前に戻すという機能はどうでしょうか。
このケースだけでなく、その他の場合のためにも、処理を一回戻すという機能を入れています。あわせて、戻した機能を1回進めるというのも入れています。操作キー、矢印キーで処理を選択、エンターキーという操作です。これも、前回の処理が前に来ていますので、それを知っていると、操作が省略されて、操作キー、エンターキーのツータッチで可能です。
聞くところによると、操作を戻す際の一連の操作の定義することができます。複数の操作を一括して定義できるということです。それを定義すれば、個々の細かい処理がまとめられ、一瞬で元に戻ります。これには対応していませんが、機能を決めて対応すると、さらに便利になると思っています。
長くなりましたので、今回はおしまいにします。
2009年1月10日土曜日
第104回目 "どこでもコピデル"の大改良。ハイパーコピデルへの変身?
○第104回目 "どこでもコピデル"の大改良。ハイパーコピデルへの変身?
"どこでもコピデル"の大改良をしました。
その名も"スーパーコピデル"段階のものに引き上げた後で、さらに改良を行い"ハイパーコピデル"としました。
第101回目で紹介したものにいろいろな機能を追加しました。
マクロの構造は簡単言うと、追加した処理を新たなキーに割り付けるということです。
機能の全体像をまとめてみました。
******** ハイパーコピデル ********
※文字の入力機能はついていますが、大量に文字を入力するのには向きません(操作をひとつ必要なのと作成する文章の長さに制約があるので、40文字程度に区切って入れなければならないこと)。
※大量に入力した文字の第1回目の修正(主に誤字脱字の部分)には、それほど向いていません。
【基本情報】
'@トグルマップ…1
'@Hyper_CopyDell_Mojis.mac
【基本機能】
□コピー、削除、移動を行う
□機能の切り替えは、原則コピー(C)とし、削除はD、移動は*(コピーと移動の切替)とする。移動後及び削除後はコピーモードに再セットする。
□貼付位置を指定し、対象文字列を選択しEnter(スペース、削除の場合はさらにDeleteでも可)で実行。
□コピーでコピー元から指定する逆指定…F8(F8は操作キー。以下同じ)
□指定の初期化…ESC
□ファイルのセーブ…S
□マクロの終了…F12。
【特殊コピー1】
□直前に貼付けたもの再度貼付…F4。。
□コマンド命令辞書からの貼付…F7。("ex"を入れると、"exit"、"exit for"、"exit do"などが表示されその中から選択し入力する)
□文字の挿入…H(キーボードからの挿入)
□一文字の挿入…L(キーボードからの挿入。基本的にはひらがな一文字。"ka"で"か"が入力される)
□キーボードから挿入した文字(MAX25)から選択し貼付…5。使用したもの順に並べ替えることにした。
□コピーした文字(MAX25)から選択し貼付…Q。使用したもの順に並べ替えることにした。
□特殊文字の挿入…N(、, ,\t,。,=⇒,=,である。,○,…,→,',",・,□)。使用したもの順に並べ替えることにした。
※これまでのもの(一文字挿入は除く)はすべて外部に出力されファイル化されている。次回に再利用可能となっている。
□日付の挿入…I
□TAB等(TABは初期値)の行頭への挿入…TAB
□かっこ( (『【《〈「" )で囲む…U。
□{ルビ }飾り文字等で囲む…R。中で範囲の後ろの位置を選択する。ルビ、上付き、下付き、太字、割注
【特殊コピー2】
□全文指定をコピー…A
通常の場合は、先頭位置の指定の段階でA、ENTERをおす。逆指定方式も可能。
□区切り記号で囲まれてる範囲をコピー…O(行頭の○で囲まれた部分)または7(行頭の'で囲まれた部分)
□ブロック(箱型指定)コピー(移動、削除も可能)…8
□数値による行コピー…X(中で範囲(行)の後ろの位置を選択する)
□ ''の挿入…Y(中で範囲(行)の後ろの位置を選択する)コマンドをコメント文にするためのもの
□ ''の削除…Z
□文末までクリップボードへ貼付…W
【画面操作】
□矢印キー、Home、End、PageUp、PageDownが使用可能
□ウィンドウの移動…F1、F2キー
□見出し一覧からの移動…M
□今までの主な場所への移動…F9(別ウインドへも移動可能)
□文頭へ移動…1
□文末へ移動…2
【キー入力】
□改行…Ctrl
□一字削除…Deleteキー
□数字の入力…テンキー
□一行コピー…B
□一行削除…T
□文末まで削除…BackSpace
【特殊処理】
□指定された文書群を行単位で逆転する。移動も可能とした…G
□文字列の逆転。タブまたは指定文字列の前後を逆転…E(中で範囲(行)の後ろの位置を選択する) AAA = @Line を @Line = AAA にするときに使用する。
□空行、空白行の削除…K(中で範囲(行)の後ろの位置を選択する)
□文字罫線で囲む(一行が長い文字数でも可能)… W
□文字罫線を削除する…V(中で範囲(行)の後ろの位置を選択する)
□印刷指定…P(部分印刷可能、指定した数の見出しの範囲を印刷可能)
□文字の検索…F。指定してから実行(最後尾の変更はできる)。指定しない場合は、変更できる。
□文章一行単位でのソート…W。(指定範囲の文章をソートする)。
□指定文字の置換え…J。範囲を指定した場合は、最後尾の変更が可能。指定しない場合はカーソルのあるところの単語を取得するのでそれをもとに修正。置換え範囲はその後設定する。
□処理を一回戻す。一回進める。…0の中で選択
□文字の再変換… 4
□これまでの文章中の漢字等(単語)を取得し、それを貼付ける。… 3
"クリップボード"という文字を入れたい。この記事の中の"クリップボード"という文字があるので、それを利用(取得)して入れてしまう。
"どこでもコピデル"の大改良をしました。
その名も"スーパーコピデル"段階のものに引き上げた後で、さらに改良を行い"ハイパーコピデル"としました。
第101回目で紹介したものにいろいろな機能を追加しました。
マクロの構造は簡単言うと、追加した処理を新たなキーに割り付けるということです。
機能の全体像をまとめてみました。
******** ハイパーコピデル ********
※文字の入力機能はついていますが、大量に文字を入力するのには向きません(操作をひとつ必要なのと作成する文章の長さに制約があるので、40文字程度に区切って入れなければならないこと)。
※大量に入力した文字の第1回目の修正(主に誤字脱字の部分)には、それほど向いていません。
【基本情報】
'@トグルマップ…1
'@Hyper_CopyDell_Mojis.mac
【基本機能】
□コピー、削除、移動を行う
□機能の切り替えは、原則コピー(C)とし、削除はD、移動は*(コピーと移動の切替)とする。移動後及び削除後はコピーモードに再セットする。
□貼付位置を指定し、対象文字列を選択しEnter(スペース、削除の場合はさらにDeleteでも可)で実行。
□コピーでコピー元から指定する逆指定…F8(F8は操作キー。以下同じ)
□指定の初期化…ESC
□ファイルのセーブ…S
□マクロの終了…F12。
【特殊コピー1】
□直前に貼付けたもの再度貼付…F4。。
□コマンド命令辞書からの貼付…F7。("ex"を入れると、"exit"、"exit for"、"exit do"などが表示されその中から選択し入力する)
□文字の挿入…H(キーボードからの挿入)
□一文字の挿入…L(キーボードからの挿入。基本的にはひらがな一文字。"ka"で"か"が入力される)
□キーボードから挿入した文字(MAX25)から選択し貼付…5。使用したもの順に並べ替えることにした。
□コピーした文字(MAX25)から選択し貼付…Q。使用したもの順に並べ替えることにした。
□特殊文字の挿入…N(、, ,\t,。,=⇒,=,である。,○,…,→,',",・,□)。使用したもの順に並べ替えることにした。
※これまでのもの(一文字挿入は除く)はすべて外部に出力されファイル化されている。次回に再利用可能となっている。
□日付の挿入…I
□TAB等(TABは初期値)の行頭への挿入…TAB
□かっこ( (『【《〈「" )で囲む…U。
□{ルビ }飾り文字等で囲む…R。中で範囲の後ろの位置を選択する。ルビ、上付き、下付き、太字、割注
【特殊コピー2】
□全文指定をコピー…A
通常の場合は、先頭位置の指定の段階でA、ENTERをおす。逆指定方式も可能。
□区切り記号で囲まれてる範囲をコピー…O(行頭の○で囲まれた部分)または7(行頭の'で囲まれた部分)
□ブロック(箱型指定)コピー(移動、削除も可能)…8
□数値による行コピー…X(中で範囲(行)の後ろの位置を選択する)
□ ''の挿入…Y(中で範囲(行)の後ろの位置を選択する)コマンドをコメント文にするためのもの
□ ''の削除…Z
□文末までクリップボードへ貼付…W
【画面操作】
□矢印キー、Home、End、PageUp、PageDownが使用可能
□ウィンドウの移動…F1、F2キー
□見出し一覧からの移動…M
□今までの主な場所への移動…F9(別ウインドへも移動可能)
□文頭へ移動…1
□文末へ移動…2
【キー入力】
□改行…Ctrl
□一字削除…Deleteキー
□数字の入力…テンキー
□一行コピー…B
□一行削除…T
□文末まで削除…BackSpace
【特殊処理】
□指定された文書群を行単位で逆転する。移動も可能とした…G
□文字列の逆転。タブまたは指定文字列の前後を逆転…E(中で範囲(行)の後ろの位置を選択する) AAA = @Line を @Line = AAA にするときに使用する。
□空行、空白行の削除…K(中で範囲(行)の後ろの位置を選択する)
□文字罫線で囲む(一行が長い文字数でも可能)… W
□文字罫線を削除する…V(中で範囲(行)の後ろの位置を選択する)
□印刷指定…P(部分印刷可能、指定した数の見出しの範囲を印刷可能)
□文字の検索…F。指定してから実行(最後尾の変更はできる)。指定しない場合は、変更できる。
□文章一行単位でのソート…W。(指定範囲の文章をソートする)。
□指定文字の置換え…J。範囲を指定した場合は、最後尾の変更が可能。指定しない場合はカーソルのあるところの単語を取得するのでそれをもとに修正。置換え範囲はその後設定する。
□処理を一回戻す。一回進める。…0の中で選択
□文字の再変換… 4
□これまでの文章中の漢字等(単語)を取得し、それを貼付ける。… 3
"クリップボード"という文字を入れたい。この記事の中の"クリップボード"という文字があるので、それを利用(取得)して入れてしまう。
2009年1月2日金曜日
第103回目 QXマクロを使っての仕事(一例)
○第103回目 QXマクロを使っての仕事(一例)
現在、力を入れているのは、業務上のものも含めての辞典作りです。業務上のものは言及できませんので、エクセルマクロを作るための辞典作りを題材にします。
エクセルマクロの辞典ですから、エクセルマクロ命令の使用例を取りまとめています。行頭にある○でひとつの区切りとしています。
行頭以外で使われている○は、単なる記号とみなします。その○の以下に、コマンド、機能の説明、機能の検索キー、使用例などを記述します。
現在、重複もありますが、286項目、1400行となっています。この辞書の内容は、既存のマクロから引っ張ってきています。また、マクロのホームページからの引用もあります。
この辞書は、行頭の○から次の行頭の○までを1レコードとしてみなしています。ですから新しい情報は気にせずに追加していけばいいのです。
そして、ソートをかけることができるます(これはマクロ)。すると順番に並ぶので、通常機能の検索機能を使って、該当するところに移動し、その内容を見るということができます。これは説明文章の中の文字にも反応しますので、目的とするものにまず最初にはいきつくことはできません。
また、○が見出しに設定されているので、QXエディタで通常機能の見出し一覧を表示しそこから該当箇所に飛ぶこともできます。
次の使用方法は、検索文字を設定して、その文字のあるレコード(行頭の○から次の行頭の○まで)のみを、新しいファイルに抜き出すということができます(これはマクロです)。
例えば、"input"という言葉で抜き出してみると、次のようなものが出てきます。
(たくさんあるので一部のみ)
'---------------------------------------------------------------------
○inputbox関数
z_no0 = InputBox(msg01 & ii9 & " 以内", xpos:=1000, ypos:=2000, Default:=settei_ti0)
'---------------------------------------------------------------------
○シートの移動(シートは相対位置で指定します)
ii_max = ActiveWorkbook.Sheets.Count
ii0 = ActiveSheet.Index
sh_cnt = InputBox("グラフのあるシートの場所を入れてください。… -1 , 0 , 1 …など", Default:=-1, xpos:=2000, ypos:=3000)
Sheets(ii0 + sh_cnt).Select
'---------------------------------------------------------------------
○シートの移動1
Do
flag = 0
sh_cnt = InputBox("新しいシートの場所を入れてください。… -1 , 0 , 1 …など", Default:=1, xpos:=2000, ypos:=3000)
'シートオーバーの場合の歯止め、再入力
'---------------------------------------------------------------------
以下略。
この中から、使えそうな構文をコピーするということが可能となります。またこのファイルを基にして、さらに検索をかけることで、さらに絞り込むことも可能です。
自分の外に知識を移してそこへのつながりをしっかりしておくと、結構便利だと思います。辞典的なものは分量が多くなるので、そこから必要な部分のみをセレクトするという機能が備わっていないと、辞典というデータベースを作っただけになります。
このような辞書を活用してエクセルマクロを作ります。
次に、デバックに伴う修正ですが、まず、エクセルのマクロ用のモジュールをエクスポートします。そして、そのファイルをQXエディタで開くというマクロを作っておきます(通常操作では、拡張子basのファイルをQXエディタで開くように関連付けをして、エクスポートしたモジュールを開けばいいことになりますが、操作が何回か余計にかかります。そこで、マクロが登場するのですが、このマクロでは、二桁の数字を入力して、moduleNNを開くことができますので、拡張性があります。)。
直接修正するのが簡単な場合は、モジュール上で直接修正しますが、テキストエディタでの修正が便利な場合は、QXエディタで、そのモジュールを開くマクロを動かします。そして、QXエディタで修正を行います。
(クリップボードを経由した、通常の処理、すなわち、モジュールの中で、コピーをしその内容をQXエディタに貼付けるという操作でも同じようなことになります。こちらも操作が単純です。=⇒モジュール上の操作で、Ctrl+上下の矢印(次のSubの先頭に移動)がありますが、その操作を知らないときに作ったので、この操作を知った今は、主に、クリップボード経由でQXエディタとの間のやり取りをしています)
QXエディタの中では、前々回紹介した"どこでもコピデル"も使いながら、修正していきます。
(QXエディタからエクセルマクロへの移植は、コピー・ペーストの手作業になってしまいます。これも自動化できるといいのですが、その方法が考え付きません)
また、基本コマンドについては、その頭文字からサーチできる短縮入力機能がQXエディタにはついているので、その機能(データは自分で作ります)も利用して入力します。こちらは文字数がかなり短く限定されているので、使用例も短く指定しています。
つまり、大きな機能の使用例を探すのは辞典を利用して、ちょっとした構文を探すのは短縮入力を利用するという感じです。
(QXエディタの短縮入力は、"見出し" TAB "用語など"という形式なっていて、見出しが複数の英文字で自動サーチできます。Enterを押すと、"用語など"が貼付けられます)
こう書いていたら、ひらめきました。
エクセルマクロはあるひとつのエクセルファイルの複数のモジュールに保存してあります。マクロを保存するファイルはひとつに特化しているということです。
バックアップとして、モジュールをエクスポートしています(拡張子は.bas)。
このbasはテキストファイルなので、関連付けをつけておけばQXエディタで開けます。
この一連のbasを一括結合してテキストファイルとして開く、というQXエディタのマクロを作ります。
これを動かすと、ほぼ全部のエクセルマクロが結合され、一つのファイルができます。これに検索をかけることができれば、コマンドの使用例としてはこれに勝るものはありません。
したがって、このファイルを用いて、こんどは行頭の'を区切り記号として、情報を抽出することのマクロがあればいいことになります。原型はすでにできてるので、○の代わりに、'を設定すればいいことになります。
これもひとつの辞典となります。区切りとしては適切に付加されているとはいえませんが、おおむねという感じで活用できそうです。
こういうことをやっていてつくづく思うのは、事務の7割がたがいわゆるワード系、筆者で言えばテキストエディタ系の作業になるのではないかということです。ここを攻める必要があると思います。
エクセルマクロのマクロといっても、ある場面においてはいいテキストエディタが重要である、といえると思います。そして、"読み、書き、そろばん"の"書き"の部分の役割としても、いいテキストエディタは必需品なのではないかと思っています。
皆様方においても、ワード一辺倒ではなく、テキストエディタのいいものを活用することが、目立たないことですが、事務の能率に大いに寄与するのではないかと、ひそかに思っています。
現在、力を入れているのは、業務上のものも含めての辞典作りです。業務上のものは言及できませんので、エクセルマクロを作るための辞典作りを題材にします。
エクセルマクロの辞典ですから、エクセルマクロ命令の使用例を取りまとめています。行頭にある○でひとつの区切りとしています。
行頭以外で使われている○は、単なる記号とみなします。その○の以下に、コマンド、機能の説明、機能の検索キー、使用例などを記述します。
現在、重複もありますが、286項目、1400行となっています。この辞書の内容は、既存のマクロから引っ張ってきています。また、マクロのホームページからの引用もあります。
この辞書は、行頭の○から次の行頭の○までを1レコードとしてみなしています。ですから新しい情報は気にせずに追加していけばいいのです。
そして、ソートをかけることができるます(これはマクロ)。すると順番に並ぶので、通常機能の検索機能を使って、該当するところに移動し、その内容を見るということができます。これは説明文章の中の文字にも反応しますので、目的とするものにまず最初にはいきつくことはできません。
また、○が見出しに設定されているので、QXエディタで通常機能の見出し一覧を表示しそこから該当箇所に飛ぶこともできます。
次の使用方法は、検索文字を設定して、その文字のあるレコード(行頭の○から次の行頭の○まで)のみを、新しいファイルに抜き出すということができます(これはマクロです)。
例えば、"input"という言葉で抜き出してみると、次のようなものが出てきます。
(たくさんあるので一部のみ)
'---------------------------------------------------------------------
○inputbox関数
z_no0 = InputBox(msg01 & ii9 & " 以内", xpos:=1000, ypos:=2000, Default:=settei_ti0)
'---------------------------------------------------------------------
○シートの移動(シートは相対位置で指定します)
ii_max = ActiveWorkbook.Sheets.Count
ii0 = ActiveSheet.Index
sh_cnt = InputBox("グラフのあるシートの場所を入れてください。… -1 , 0 , 1 …など", Default:=-1, xpos:=2000, ypos:=3000)
Sheets(ii0 + sh_cnt).Select
'---------------------------------------------------------------------
○シートの移動1
Do
flag = 0
sh_cnt = InputBox("新しいシートの場所を入れてください。… -1 , 0 , 1 …など", Default:=1, xpos:=2000, ypos:=3000)
'シートオーバーの場合の歯止め、再入力
'---------------------------------------------------------------------
以下略。
この中から、使えそうな構文をコピーするということが可能となります。またこのファイルを基にして、さらに検索をかけることで、さらに絞り込むことも可能です。
自分の外に知識を移してそこへのつながりをしっかりしておくと、結構便利だと思います。辞典的なものは分量が多くなるので、そこから必要な部分のみをセレクトするという機能が備わっていないと、辞典というデータベースを作っただけになります。
このような辞書を活用してエクセルマクロを作ります。
次に、デバックに伴う修正ですが、まず、エクセルのマクロ用のモジュールをエクスポートします。そして、そのファイルをQXエディタで開くというマクロを作っておきます(通常操作では、拡張子basのファイルをQXエディタで開くように関連付けをして、エクスポートしたモジュールを開けばいいことになりますが、操作が何回か余計にかかります。そこで、マクロが登場するのですが、このマクロでは、二桁の数字を入力して、moduleNNを開くことができますので、拡張性があります。)。
直接修正するのが簡単な場合は、モジュール上で直接修正しますが、テキストエディタでの修正が便利な場合は、QXエディタで、そのモジュールを開くマクロを動かします。そして、QXエディタで修正を行います。
(クリップボードを経由した、通常の処理、すなわち、モジュールの中で、コピーをしその内容をQXエディタに貼付けるという操作でも同じようなことになります。こちらも操作が単純です。=⇒モジュール上の操作で、Ctrl+上下の矢印(次のSubの先頭に移動)がありますが、その操作を知らないときに作ったので、この操作を知った今は、主に、クリップボード経由でQXエディタとの間のやり取りをしています)
QXエディタの中では、前々回紹介した"どこでもコピデル"も使いながら、修正していきます。
(QXエディタからエクセルマクロへの移植は、コピー・ペーストの手作業になってしまいます。これも自動化できるといいのですが、その方法が考え付きません)
また、基本コマンドについては、その頭文字からサーチできる短縮入力機能がQXエディタにはついているので、その機能(データは自分で作ります)も利用して入力します。こちらは文字数がかなり短く限定されているので、使用例も短く指定しています。
つまり、大きな機能の使用例を探すのは辞典を利用して、ちょっとした構文を探すのは短縮入力を利用するという感じです。
(QXエディタの短縮入力は、"見出し" TAB "用語など"という形式なっていて、見出しが複数の英文字で自動サーチできます。Enterを押すと、"用語など"が貼付けられます)
こう書いていたら、ひらめきました。
エクセルマクロはあるひとつのエクセルファイルの複数のモジュールに保存してあります。マクロを保存するファイルはひとつに特化しているということです。
バックアップとして、モジュールをエクスポートしています(拡張子は.bas)。
このbasはテキストファイルなので、関連付けをつけておけばQXエディタで開けます。
この一連のbasを一括結合してテキストファイルとして開く、というQXエディタのマクロを作ります。
これを動かすと、ほぼ全部のエクセルマクロが結合され、一つのファイルができます。これに検索をかけることができれば、コマンドの使用例としてはこれに勝るものはありません。
したがって、このファイルを用いて、こんどは行頭の'を区切り記号として、情報を抽出することのマクロがあればいいことになります。原型はすでにできてるので、○の代わりに、'を設定すればいいことになります。
これもひとつの辞典となります。区切りとしては適切に付加されているとはいえませんが、おおむねという感じで活用できそうです。
こういうことをやっていてつくづく思うのは、事務の7割がたがいわゆるワード系、筆者で言えばテキストエディタ系の作業になるのではないかということです。ここを攻める必要があると思います。
エクセルマクロのマクロといっても、ある場面においてはいいテキストエディタが重要である、といえると思います。そして、"読み、書き、そろばん"の"書き"の部分の役割としても、いいテキストエディタは必需品なのではないかと思っています。
皆様方においても、ワード一辺倒ではなく、テキストエディタのいいものを活用することが、目立たないことですが、事務の能率に大いに寄与するのではないかと、ひそかに思っています。
登録:
コメント (Atom)
