...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

仕事の話

VBAは難しい

だからあまり触りたくない.だって何をしたらいいのか見通せないから.プログラミング言語は基本的な機能を組み合わせて処理を実現するもののはずなのに,VBAはどうもそうではない感じがする.なんか違和感がある.言うなれば,起こりえる場面の数だけ関数が用意されているような.そりゃあJavaや.NETのライブラリだって必要な機能の数だけ関数が用意されていて,大きな違いはないのかもしれない.だけど,それでもなんか違う,違うんだよなあ.

エクセルでデータベースもどき

仕事で,あるエクセルファイルをデータベースの代わりにして,それを書き換えたら,別のフォーマットに整形してあるエクセルファイルにもその変更が反映される仕組みが必要になった.

当然ながら,普通なら,データベースで一元管理されたデータから複数のクエリ(ビュー)を作成するところだ.ところが,そういう理想的な話だけで片づかないのが悲しいところ.うちの職場はIT系じゃないので,導入するとしたらアクセス以外は無理.他のDBMSは僕以外には扱えない.でもアクセスを購入する権限を持っている側は,データ管理自体必要ないと思っていて買ってもらえないらしい.

しょうがないから,セルの値を,外部のエクセルファイルのセルにリンクさせる機能を使って,擬似的にDBとクエリのような関係を実現することになった.不毛だが最もマシだろう.ただ,DBの代わりにするエクセルファイルは,データだけを入力してあるのではなくて,それはそれで1つのクエリとして,1つの印刷フォーマットとして,整形されている.それをベースにしてもう一つの印刷フォーマットを自動的に作りだそうとしているので,どうしても,どのセルとどのセルが対応しているのかを把握し,入力するのが大変手間になる.普通はマウスを使ってリンク貼り付けをするが,そうすると,データの並びが一様でないので,1セルずつ貼り付けてやらないといけない.想像すると目眩がする.

なるべく楽をしたい.こんなときのためのプログラミングじゃないか.頭を使え.

幸いエクセルは”=”で始まるテキストを貼り付けるとそれを式として認識してくれる.それをタブと改行で区切って並べれば先に表形式に整形しておける.うまく”=”やファイル名やセル番号を含めたテキストを作っておくことができれば,コピペで一丁上がりだ.それでもやっぱり一度はその並びを書き出す必要があるが.これはマウスでいちいちリンク貼り付けするよりは楽だとはいえ,調べる作業を一人でやるとなるとなかなかな骨が折れそうだなあ.あー.

そもそも,元にするデータを入力しておくエクセルファイルのフォーマットを,印刷できる形式ではなくて,データ参照の用途に特化したらいいのかもしれない.そしたら,データベースに相当するファイルと,2つのクエリに相当するファイルになって綺麗だから.安易にそれをやると,セルのマッピングを調べる作業が2倍になりそうだけどね.あは.マッピングとか考えなくていいようなフォーマットを考えればいいのかな.

なんか,エクセルの表データをD言語とかの二次元配列を介して扱えるライブラリがあったらいいんじゃなかろうか,と思った.こんな感じでCOMを仲介させることになるだろう;

D > COM > XLS

もしかしたらCOMとXLSの間にVBAが入るのだろうか.いや,VBAって基本的にCOMそのものだよな?

追記

いや,D言語なんて使うよりスクリプト言語の方がいいかも.VBAの言語としての能力が疑問な訳だしRubyとかの方がいいよね.あれ? そういえば,そもそもエクセルファイルをODBCを使ってデータベースとして扱うことができたような・・・.

ちょうど最近の人気エントリーに載ってた

なんというタイミング.

ActiveState社のActivePerlを使うと、Windowsで簡単にPerlの実行環境を構築できます。いくつかのモジュールを使って、Office文書を作成したり、iTunesのプレイリストを操作する方法などを紹介します。

http://codezine.jp/a/article/aid/1567.aspx

Perlのライブラリの豊富さは相変わらずすげえな.