be cool, so cute and get better than anything present!
VC++で仕事用ツールを作ろう [プログラム]
最近はすっかりExcelVBAばかりの私。それはそれでいいんですケド、VBSもちょっと置き去りな感じだし…。やりたいコトはいろいろあるのですが、手軽に何かをやろうと思うと、身近にあるのはExcelVBAなわけです。
そこで、動作的には非常に簡単な、かつ手動でやるとめんどうくさかったりメモリ不足とか言われる処理を、VC++で作成するコトにしてみようかと。
今私がやりたいのは、「複数の、ヘッダ行付きtxtファイルを、一つのtxtにまとめる」アプリ作成。
業務上では、1ファイル20MBクラスのtxtファイル×20以上(全てフォーマットは同一)を、Accessにインポートして、各種クエリを実行したりしています。
この×20回以上インポートが大変で仕方がないのです。1インポートに3分~5分とかかかるし。そしてこのtxtファイルの数は、今後増えていく予定なのです。
そこでこのtxtを1つにできれば、インポートが1回で済むワケなんですよね。時間は長くなるでしょうが、トータルで見ればぐっと短くなるハズ。
この問題に対する1stアプローチは、コマンドプロンプトでした。「copy *.txt ALL.txt」とかって実行すると、30秒足らずで1txtになってくれます。
が、問題は「ヘッダ行付きtxt」ってところで、1ファイルの中にところどころヘッダ行が挿入されている状態になるわけです。これではインポート先テーブルのデータ型の関係で、うまくインポートができません。
これを、はじめはVBScriptでチャレンジしようと思っていました。
処理としては、こんなイメージです。
・フォームVisible
・出力先パスをTextboxなどで指定
・結合元txtを、フォームにドロップ
・実行ボタン☆
・新規txt作成
・1ファイル目だけヘッダ行を有効にし、2ファイル目以降は2行目以降のみを読み込み
・ひたすら書き込み
・完成♪
しかし、動作も単純で拡張性もそれほど感じられないので、なんとかexeファイルにしようと思ったのです。
で、本日のうち半日をVC++2008と格闘…。
>VBAに慣れ過ぎて、スムーズにコーディングできない。
>>いろいろ忘れてる&学生時代のVC++6.0とはいろいろ違う…。
>>> OTL...
1日で出来ると思ってましたが、甘かったです。今月中完成を目標に、確実に制作を進めていこうと思いました。もしExVBAやVBSでサクッと作れたとしても、これはこれでリハビリになりそうです。
もっとも、Officeファイルを操作するならば、VBAとはずっと付き合っていくでしょうし、職場でいろいろ実験+拡張しようと思ったら、会社に開発環境があるVB系のほうが立ちまわり易いです。
しかし実際の業務では、txtやcsvも扱いますし、そういうものに対してはCのほうがおそらく高速に処理ができると思います。で、Cで1つ有用なものができれば、またいろいろ出来るコトが広がりそうです。
以前にも紹介した参考図書。
ひと目でわかるMicrosoft Visual C++ 2008 アプリケーション開発入門 (マイクロソフト公式解説書)
- 作者: 増田 智明
- 出版社/メーカー: 日経BPソフトプレス
- 発売日: 2008/03/27
- メディア: 単行本
be cool, so cute and get better than anything present!
コメント 0