わんすけに聞いてみる WinActor [WinActor]テキストの文字コード変換(SJIS⇔UTF-8)

[WinActor]テキストの文字コード変換(SJIS⇔UTF-8)

天からのお告げで、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」から選べます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Related Post