天からのお告げで、CSVをWebシステムにアップロードする前にSJISをUTF-8に変換してほしいという声が聞こえたので書いてみました。
1.文字コード変換といえば、「ADODB.Stream」
文字コード変換する時にCopyToでStreamを繋げる必要があって、入力と出力のファイルが一緒だとエラーになったので、入と出が一緒だったらGetTempNameで取得した仮ファイル名でファイル作ってから置き換えるって処理を付けてます。
入力ファイルが存在しなかったらエラーがでます。
いつもの如く、以下のスクリプトをスクリプト実行ステージに張り付ければ実装できます。
inFile = !元ファイル! ConvType = !変換処理|SJIS⇒UTF-8,UTF-8⇒SJIS! outFile = !変換後ファイル! BefCode = "" AftCode = "" Set objFS = CreateObject("Scripting.FileSystemObject") If Not objFS.FileExists(inFile) Then Err.Raise 1, "", "元ファイルが存在しません。" WScript.Quit End If If inFile = outFile Then ReplaceFlg = True outFile = objFS.GetTempName Else ReplaceFlg = False End If Select Case ConvType Case "SJIS⇒UTF-8" BefCode = "Shift_JIS" AftCode = "UTF-8" Case "UTF-8⇒SJIS" BefCode = "UTF-8" AftCode = "Shift_JIS" End Select Set objBef = CreateObject("ADODB.Stream") Set objAft = CreateObject("ADODB.Stream") objBef.Type = 2 objBef.Charset = BefCode objBef.Open objBef.LoadFromFile inFile objAft.Type = 2 objAft.Charset = AftCode objAft.Open objBef.CopyTo objAft objAft.SaveTofile outFile objBef.Close objAft.Close If ReplaceFlg Then objFS.DeleteFile inFile objFS.CopyFile outFile, inFile End If Set objFS = Nothing
2.設定タブは、こんな感じ。
変換処理は、「SJIS⇒UTF-8」と「UTF-8⇒SJIS」から選べます。