プチIT化 PR

【VBS】テキストファイルの文字コードを変換するコードサンプル

記事内に商品プロモーションを含む場合があります。
当サイトは、アフィリエイト広告を利用しています。

こんにちは、わたあめです。今日は文字コードを変換するVBScriptのコードサンプルを紹介します。

文字コードを変換する手法としてはいくつかあります。Linuxだとiconvコマンド、またPowershellであれば文字コード変換のコマンドが用意されているみたいです。ただ、Windows10標準のコマンドプロンプトには、文字コードを変換するコマンドがないみたいです。

そこで、今回はVBScriptを作成して、コマンドプロンプトからVBSを実行することにしました。そのVBScriptのサンプルコードを紹介していきたいと思います。それでは、いってみましょう!

文字コード変換するVBScriptサンプル概要

文字コード変換VBS概要イメージ

UTF-8をShift-JISに変換するサンプルコードを作成しました。UTF-8のファイルを読み込み、Shift-JISで上書き保存する処理です。ファイルの内容を読み込む入力オブジェクト、入力ファイルの内容をShift-JISで書き込む出力を2つのオブジェクトを使って実現していきます。

コードサンプルと作成・実行方法

サンプルコードは、以下です。コードの解説は次章で行っています。

'============================================
' 文字コードを変換するVBScript
'============================================

'変数定義
Dim objInput,objOutput
Dim file

file = "ファイルパス"

'オブジェクトセット
Set objInput = CreateObject("ADODB.Stream")
Set objOutput = CreateObject("ADODB.Stream")

'1.入力ファイルオブジェクトを開き、ファイルを読み込み(ロード)
objInput.Charset = "UTF-8"
objInput.Open
objInput.LoadFromFile file

'2.入力ファイルの内容を変数に格納
tmpStr = objInput.ReadText

'3.出力ファイルオブジェクトを開き、一時的な文字列変数を書き込み
objOutput.Charset = "Shift_JIS"
objOutput.Open
objOutput.WriteText tmpStr

'入力ファイルオブジェクトを閉じる
objInput.Close

'4.上書き
objOutput.SaveTofile file , 2

'出力ファイルオブジェクトを閉じる
objOutput.Close

[file = "ファイルパス"]の部分には、実際に処理をしたいファイルパスを指定してくださいね。例えば、Cドライブ直下のtest.txtというファイルを処理するのであれば、以下のような書きっぷりとなります。

file = "C:\test.txt"

作成したvbsは、vbsをダブルクリックすれば実行できます。

コード解説

サンプルコードの大まかな解説を行います。コードの中に記載したコメント文の通り、流れは以下です。

コード解説:オブジェクトを利用した文字コード変換
  1. 入力ファイル用オブジェクト(objInput)を開き、ファイルを読み込みます
  2. 入力ファイル用オブジェクト(objInput)で読み込んだ内容ををtmpStr変数に一時的に格納します
  3. 出力ファイル用オブジェクト(objOutput)にtmpStrの内容を書き込みます
  4. ファイルを上書きします

オブジェクトobjInputは、文字コードをUTF-8にセットして開いたものです。オブジェクトobjOutputは、文字コードShift-JISをセットして開いたものです。なので、UTF-8の文字列を読み込んで、書き込みするときはShift-JISの文字列になっているという訳です。

わたあめ
わたあめ
なんとなくでもイメージが伝われば幸いです!

コード改造アレンジするには?

今回のサンプルコードは、UTF-8をShift-JISに変更するというものでしたが、違う文字コードの時はどうすればいいのかも記載しておきます。

文字コードの指定は、オブジェクトをOpenする前の以下の文で行っています。

objInput.Charset = "UTF-8"
objOutput.Charset = "Shift_JIS"

変換前の文字コードを「objInput.Charset = "文字コード"」で指定し、変換したい文字コードを「objOutput.Charset = "文字コード"」の部分で指定してください。

その他注意事項

今回は文字コード変換部分の処理のみ記載で、細かい改行コードやBOMの有無の処理など入れていません。細かいところは必要に応じて調整ください。

さいごに

最後までお読みいただき、ありがとうございました。少しでもマクロの作成のお役に立てていれば幸いです。それでは、また!