VBA

2002年10月15日 火曜日

今日はお休み

ようやくお休みになった。なんだか風邪を引いた模様。のどが痛い…

VBAを使う理由

昨日の議論の続き。じゃ_なぜにVBAを使っているのですか?_と言う話も言及しておこう。
本来VBAでできるものは、Active PerlActiveScriptRubyで書いた方がよりスマートにかける。こないだも苦労したが、VBAは文字列処理が非常に弱いので、テキスト処理を得意としている言語でやった方がスマートにかけるプログラムは多い。
じゃなぜ?と言う話は簡単で、VBAで書く物はお仕事でしか存在しないからだ。(僕は家のPC用にOffice2000のライセンスを2個持っていますが、インストールしてません。) ただみなさんに「ActiveScriptRubyをインストールしてくださいね」と言うのと、インストールしてもらう利点を説明するのが、めんどくさいからだ。(だってExcelはすでにインストールされているものね。)
ただ最近ExcelのシートにマクロをつけるよりはAddinとして配布すべきだと思い至ったので、最近僕が作るマクロはAddinになるようにしています。使っている理由はただそれだけです。VBやVBAというかMSの生成物に美しさを期待するのは愚の骨頂なので、適当におつきあい。それが正しい姿であろうと思うのだ。書きたい言語で書いていいよと言われれば、絶対選択しない物であるのは確か。

2002年09月20日 金曜日

やっぱりVBAは嫌い

今日はなにげにVBAでテキスト処理プログラムを書いてみた。汎用なカンマ区切りテキスト処理を行いたいのだが、ちょっと変なファイルで、最初の項目だけコロンで区切れられているファイルで、レコード長は最初の項目で決まるので、普通のストリーム入出力なら、

  • 一行読み込み
  • 受け用の配列に取り込み(Cで言えば sscanfとかを使うのね)
  • 内容に応じて、適当に逐次データ処理
    となりそうなものだが、そうはいかないところがVBAの凄いところ。こういう処理をする関数やステートメントが存在しないのよ。おそらく可変数の変数をもらう関数が書けないせいだと思うが、配列使えよって言う感じ。さらに連想配列がないのもつらいねぇ。(Excel VBAの場合、シート上にデータをおいた方が早かったり。何か違う気がする。) 結局、
  • 一行読み込み
  • 行の頭から1文字ずつ読み込んで、区切り記号が出て来たところで、前の区切り記号からの文字を配列に取り込み
  • 行の末尾まで繰り返し
    というなかなか楽しい処理を行う羽目に。何と素晴らしい。なぜにここまで低レベルの処理を書かないとならないんだか。さすがMS。苦労したおかげで、何とか思い通りの処理を書けそう。
    もうテキスト処理が得意な言語で書けば良いじゃんと言う話があるんだが、最終的な出力はExcel文書でrubyにしてもperlにしても、新たに処理系をインストールしてもらわないとならないので、できない状況なのよね。もっと便利にならないものかね。もっと良い方法があったりして…

2002年05月08日 水曜日

図ったように雨ですねぇ

GWは気持ちのよい天気が続いたが、終わったとたんに雨が降るとは、なかなか便利な天気だ。世の中のおとーさま達もさぞやうらめしいことだろう。とはいえ、日曜日と月曜日は晴れてよかったですねぇ。

VBAにおけるストリーム入出力

Cにおける以下のソースと等価なVBでの表現はどうなるのだろう? 誰か知っている人、教えてください。お分かりのように、scanfを使うなと言う話なんだけども、1行入力してからデータを切り分けたい時ってあるんだよね。

(void)fgets(line, sizeof(line), stdin);(void)sscanf(line, format, &var1;, &var2;, ... );

思うに、VBAでsscanfのような事って出来るんかいな?

2002年04月29日 月曜日

Java World 2002.06

JDK 1.4が付属すると言うことで購入した。JDK1.4のレビューも掲載されていたのでこれはよいと思って買ったのであるが、JDKの今回のリリースの見所はXML関係のライブラリ充実(JXAPの追加)と言うところか。JAXPをダウンロードせねばなぁと思っていただけに結構嬉しい。あと最近の興味で遊べそうなのはImage I/O APIでしょうか。
C++のtemplateに相当するJava Genericsの搭載はJDK 1.5に延びたらしいので、まだまだキャストの呪縛からは逃れられないのは残念。僕はC++が大好きな人ではなくなったけど、膨大なC++の余計な(笑)機能のうち、templateは珍しく評価している機能なだけに、Javaにまだ存在していないのは痛い。もっともtemplateを評価しているのはSTLの存在によるところが大きいのであるが。評価Java Genericsを使用したSTLみたいなライブラリが登場すると、非常に魅力なのだけどねぇ。

2002年04月27日 土曜日

またまたVBAと戦う

この間とは違うマクロの改良を行うべく、またまたVBAと戦うことになった。今回は表示周りに手をかけずにロジックを付け足すというものであったから、結構簡単にいった。それでも表示部分をもっと再利用性のよいライブラリになるようなものにしておかないと、またまた保守できない・する気にならない状態になってしまう(すでに中身を変更する気はないけども)ので、もう少し時間をかけていじっていこうと思う。業務に必要なだけに困ったものだ。(そもそもExcelに依存していることが問題なのね。)