2009年4月17日金曜日

CSVの項目を並び替えるスクリプト

仕事で必要になったので、久々にコードを書くにはちょうどいいかも
と思い、WEBで調べつつ手軽なVBScriptで作成。
(VBScriptってトコがヘナチョコ感満載。でも、WSH使えるなぁ…)

[並び替え前のCSV]  [並び替えた後のCSV]
1番目の項目  --------> 5番目
2番目の項目  --------> 4番目
3番目の項目  --------> 2番目
4番目の項目  --------> 1番目
5番目の項目  --------> 3番目

といった変換をするスクリプトです。
本当に久々にコードを書いたので、
カッコワルサとかその辺は勘弁してください。
ちなみに、これ作るのに2時間もかかりました…
細切れで空いた時間に作ったとはいえ、萎える…orz


-------------------------------------------

'---------------------------------------------------------------
' CSV変換スクリプト
'---------------------------------------------------------------

Option Explicit

' 引数(ドラッグアンドドロップしたファイル名)を取得
Dim objArgs
Set objArgs = WScript.Arguments

Dim strFileName

If objArgs.Count = 0 Then
strFileName = InputBox("変換したい CSV のファイル名をフルパスで入力してください。")
Else
strFileName = objArgs(0)
End If

'ファイル名が入力されなかったら終了
If strFileName = "" Then
WScript.Quit
End If

Dim objFS

'定数の定義
Const ForReading = 1,ForWriting = 2,ForAppending = 8
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")

Dim objFileInput
Dim objFileOutput

Set objFileInput = objFS.OpenTextFile(strFileName, ForReading)
Set objFileOutput = objFS.CreateTextFile(strFileName & ".convert.csv", True)

Dim aryDestCols(4)
Dim strLine
Dim arySrcCols
Dim strCol

'ヘッダを書き出す場合はここで。
objFileOutput.Write _
"""1カラム目"",""2カラム目"",""さ~んカラム目""" & vbCrLf


Do Until objFileInput.AtEndOfStream
'変換元CSVを1行読み込む
strLine = objFileInput.ReadLine
'項目ごとに分解する
arySrcCols = Split(strLine, ",")

'マッピング通りに入れ替え
aryDestCols(0) = arySrcCols(3)
aryDestCols(1) = arySrcCols(2)
aryDestCols(2) = arySrcCols(4)
aryDestCols(3) = arySrcCols(1)
aryDestCols(4) = arySrcCols(0)

objFileOutput.Write Join(aryDestCols, ",") & vbCrLf
Loop

objFileOutput.Close
objFileInput.Close

2009年4月2日木曜日

体制変更、技術寄りなポジションに戻りました

技術部門から営業部門に転向して3年。

技術への関心と知識を落さないように、
と思ってこのブログを始めたものの、
結局技術系なネタはほとんどなし、でした。
反省。

そんな中、会社の組織体制が4月から変更、
ボクはまた技術系の立ち位置に戻ることに
なりました。

技術系、といっても、ほとんどプロマネみたいなもんですが。

プロダクトを抱えているので、業務系知識から
市場データや競合等の情報整理、それらをまとめた
製品企画から実装、品質管理まで、幅広く
担当していくことになりそうです。


というか、そういった幅広くまとめていけるように
ならないといけなさそうです。

ちょっと大きな変化ですが、何とかかんとか
頑張っていきたいと思います。

というわけで、今後、ひょっとしたらまた
技術寄りなネタもエントリーできるかもしれません。
期待薄ですが…。

というわけで、今日が新年度スタートの方も
多いかと思いますが、今期もよろしくお願いします。