Accessロゴ

AccessのVBAでファイルの文字コードを変換するサンプルプログラムを覚書。

ファイルの文字コード変換自体はフリーソフトとか使えば簡単に出来るのですが、どうしてもプログラム中でファイルの文字コードを変換しつつ処理を実行する必要があったため作成しました。

実際には別のプログラムからこのプログラムを呼び出して大量にあるテキストファイルの文字コードを変換しつつ処理をするプログラムを作成しましたが、この記事では文字コード変換部分だけを覚書しておきます。

このプログラムを動作せる前提として、ADODBオブジェクトを使用するので参照設定で"Microsoft ActiveX Data Object Library"にチェックを付けておく必要があります。

サンプルプログラムは、AccessのVBAで記載されていますが、基本的にはExcelのVBAでも使用できます。

ExcelのVBAで使用する際も参照設定を忘れないようにしてください。
スポンサードリンク


文字コードを変換するサンプルプログラムの処理概要

このプログラムの処理の考え方としては、簡単に言うと元々のテキストファイルの文字コードと同じ"箱"と変換したい文字コードの"箱"の2つを用意しておいて、元々の文字コードの"箱"に一旦ファイルを入れて、別で用意した変換したい文字コードの箱に移すことでファイルの文字コードを変えるという感じです。

文字コードを変換するVBAのサンプルプログラム

以下に文字コードを変換するサンプルプログラムを記載します。
Public Sub Cnv_CCode(fConvFileName As String, strBeforeCode As String, strAfterCode As String)
Dim BeforeStream  As New ADODB.Stream, AfterStream As New ADODB.Stream
Dim CheckStream As New ADODB.Stream, fAfterFileName As String
    
fAfterFileName = fConvFileName
   
    Set BeforeStream = CreateObject("ADODB.Stream")
    BeforeStream.Charset = strBeforeCode
    Call BeforeStream.Open
    
    Set AfterStream = CreateObject("ADODB.Stream")
    AfterStream.Charset = strAfterCode
    Call AfterStream.Open
    
    Call BeforeStream.LoadFromFile(fAfterFileName)
    Call BeforeStream.CopyTo(AfterStream)
    
    
    Call AfterStream.SaveToFile(fAfterFileName, adSaveCreateOverWrite)
    
    Call AfterStream.Close
    Call BeforeStream.Close
    Set AfterStream = Nothing
    Set BeforeStream = Nothing
    
End Sub

サンプルプログラムの使い方

使い方としては、変更前の文字コードと変換後の文字コードを引数として指定して別のプロシージャから呼び出して実行する。

例えば、元のファイルが"EUC-JP"で、それを"UTF-8"に変更したい場合は、以下のようにCallで呼び出して実行すれば良い。

上書きされるので試すときは必ずバックアップをとっておくこと!

呼び出す側のプロシージャの例

以下に文字コードを変換するサンプルプログラムを呼び出す側のプロシージャの例を記載しておきます。
Sub test()

  Call Cnv_CCode("C:\temp\hogehoge.txt", "EUC-JP", "UTF-8")

End Sub
変換前のファイルが本当に指定した文字コードかどうかをチェックした上で呼び出すことが望ましいので、文字コードをチェックするプログラムも同時に作ったのですが、そのプログラムについては、別の記事で紹介します。

ちなみに単にファイルの文字コードを変換したい(自動じゃなくて良い)のであれば、以下のフリーソフトが超絶便利なのでこちらを使いましょう。

ファイルが多量にあっても一括して変換してくれるし高速です。

KanjiTranslator

大変お世話になっているとても良いソフトです。

スポンサードリンク

  

関連記事