Excelのマクロをいじる

ファイルを整理するのに久々にExcelのマクロをいじってみた。見よう見まねで他人が作ったマクロをいじったりしてたけどフルスクラッチは久々です。それでも昔作った別のマクロのソースを見ながら試行錯誤ですけど何とか目的は果たせました。
大量のファイルがXMLで管理されてるのですけど、最新のExcelだとXMLパーサーがあるみたいだけどうちのはExcel2000なので当然無い状態。C言語のパーサーライブラリを持ってきてCで書こうかなとか思いましたけど、Borland Cでは駄目っぽくてMinGWを使わないとコンパイルできないのでCは諦めてExcelかなと。
XMLといっても目的のタグは限られてるのでテキストで読み取って目的のタグを拾い集めて処理するだけなので解析は自前だったり。ハマったのが文字列処理でMid関数はよかったのですけど、LeftとRight関数が使い方のイメージが違っていて予期せぬ結果になった。うちは指定した位置の左側の文字列を取るのがLeftだと思ってたら1桁目から指定文字数という使い方だった。指定文字位置から後ろを取るのにRightと。XMLファイルの先頭がTAB文字が入っていてそれでずれるのか?とか思ってマクロを何度直しても動作がおかしくて少し悩みました。まあ、よく考えれば元の仕様もうなづけるけど、StratusのPL/Iを結構長くやってたのでsubstr、before、afterのイメージで書いたのが敗因でした。Trim系関数もTABを取り除くスイッチとかあればいいのに見当たらなかったので前TAB、スペースでタグが続く場合の処理を考えるのにも時間がかかったよ。結局Forで先頭から文字を調べていく基礎的なやり方ですけど対処できました。
あとチェックするフォルダが13種類もあったので一覧をとってForで処理すれば簡素になったのでしょうけど、考えるのが面倒だったので13多重のIFが続いたとさ。ELSE IFって無いのが問題だよな。なのでTHENとかELSEの中にまたIFがって漢字になる多重だった。Forの多重よりはマシですけどね。(昔、BASICでプログラミングしてたときはForとか多重させる場合制限があったような。VBAはあるのか知らん。業務で使うなら調べるだろうけど趣味だからいいや)
それにしてもファイル処理とか親和性が高くて慣れてくるとExcelから離れられなくなる理由がよくわかった気がした。テキストを吐くような外部コマンドを実行して結果をシートに挿入してしまえれば、外部コマンドを多用して処理するのも可能だね。文字列処理がもっと関数が豊富になってForとかでロジックを組まなくても処理できるようになればもっと便利になりそうな気がする。
そういえば、以前の会社でFTP.EXEを起動させてサーバ上にあるファイルを持ってきて統計を出すようなマクロを書いてた協力会者の人が居たけどDLLとかで拡張せずにWindows標準コマンドでよく作り上げるなぁと関心したものです。そこまで使いこなせると楽しくて仕方ないよね。