転職した52歳社内SEのおぐです。
ExcelやAccessでVBAを使ったプログラミングの仕事をしています。
以前の職場ではCSVファイルを取り込んで、加工した結果を固定長テキストに出力するプログラムがメインでした。
転職先ではXML形式でデータを取得してCSVに吐き出すプログラムに取り組んでいます。
「VBAわかるならできるでしょ」と軽く依頼されたのですが、実際のところ、かなり手こずっています。
オンラインマニュアルを見ながら奮闘中です。
この記事の内容
そもそもXMLって何?
XMLとは、eXtensible Markup Languageのことです。
日本語に直訳すると「拡張可能なマークアップ言語」となります。
マークアップ言語と言うことで、ホームページを作る時に使われるHTMLの仲間だと理解しています。
文字を装飾するタグがあり、タグに括られた内容によって文字の意味が変わってきます。
XMLはHTMLよりも決まり事がゆるく、というか何でも定義しだいということで、何層にも渡る階層構造で表現できます。
ネットを通じたデータ交換では、ほぼXMLですね。
以前、大手量販店とのデータ交換の仕組みを開発していましたが、JCA手順でXMLファイルをやりとりするなんて言ってくるところもありました。
全銀手順やJCA手順でデータ交換するのであれば、固定長テキストで良いのに・・・、と口が裂けても言えませんでした。
何か理由があったのでしょうね。
固定長テキストデータの方がデータ量が減るので、オフコン時代から開発に携わっている者としては、わざわざXMLにする理由が理解できません。
必要なデータ項目が決まっていて、データレイアウトの自由が無くても良いのであれば、わざわざXMLにしなくても良いと思います。
将来的な拡張を考えてのXMLということになるのでしょうね。
VBAでXMLを処理する方法
XML形式で記載されたデータですが、構造が単純であればExcelにインポートして処理することが可能です。
複雑なXMLであっても対応付けが出来ていれば可能なんですが、そのあたりの設定までは踏み込んで理解していません。
そのため、私はVBAを使ってXMLを処理することにしました。
まだ理解しきれていないのですが、XMLDOMクラスというのを使っているようです。
ネットで見つけたサンプルプログラムを使ってコードを書いているので、うろ覚えのなか、結果を見つつ調整している感じです。
.Netを理解しているプログラマーだと、XMLの処理は必須なんでしょうね。
固定長とCSVで生きてきたおじさんにはXMLの処理は理解が追いついていきません。
同じVBAでも違う
VBAでのプログラミングでも、使うオブジェクトやコントロールが違うと、違う言語のようになります。
PHPやJavaでもフレームワークが違うと、違う言語のようになるような感じでしょうね。
昔、損害保険会社のアプリ開発でVBを使ったプロジェクトに携わったことがありますが、オリジナルのライブラリを使った開発だったので、それを理解するのに苦労しました。
WEBシステムから吐き出したCSVを固定長テキストに加工したり、オフコンから吐き出した固定長のデータをCSVに加工するのは得意なんですけどね。
VBAの経験があるかと言って、何でもできる訳ではありません。
業種だけでなく、扱うデータによっても違うことが良くわかりました。
Excelでも、DBを操作できたり、httpリクエストが使えたりします。
やろうと思えば何でもできそうですね。
奥が深いです。
何ができるのかを幅広く知る
マニュアルを読んで調べるのが好きです。
たぶん、こんな事ができるはずだから、この辺りに書いてあるはず、と目星を付けてマニュアルを読みます。
VBAのマニュアルなら、ほとんど日本語になっていますが、サービスによっては英語のマニュアルしか無い場合もあります。
そんな場合は、どの辺りに必要な情報が書かれているのか、見つけるセンスが必要です。
翻訳ソフトを介して、変な日本語との格闘になるのですが、何ができるのかはなんとなくわかっているので、辻褄のあう日本語に自分で変換していきます。
マニュアルを調べると遠回りしているように感じますが、結局、最短ルートだったということもよくあります。
ここでめぐり逢えたみなさんにお願いです!
このブログは人気ブログランキングに参加しています。
応援してもらえると、とても喜んでもっと良い記事を書きますので、下のバナーをクリックしてください!