トップ  >  サンプルソース  >  漢字コード変換(VBS/VBA)

漢字コード変換(VBS/VBA)

2010年05月21日

漢字コード(文字コード/全角コード)を変換するサンプル(ソース/コード)です。NonCodeVb6.dll を使っています。VB SCRIPTやVBA(このサンプルはEXCELを使用)で漢字コードを変換できます。VB SCRIPTやVBAなら.NETの開発環境が無くても自分専用のツールが作れます。VB SCRIPT(WSH)ってお手軽ですね。

このVBSサンプルは64bit(x64)版VBSではCreateObjectエラーになります。32bit(x86)版のWSH(C:\Windows\SysWow64\cscript.exe)を使用してください。

※漢字コード関係のツールやサンプルはこちら「漢字コード関係」です。

' ---------------------------------------------------------
' 漢字コード変換のサンプル(VBS)
' オブジェクト定義(事前準備:regsvr32 NonCodeVb6.dll)
Set objNonCode = CreateObject("NonCodeVb6.NonCodeClassV")

' file1(SJIS)をfile2(JIS)に変換
file1 = "d:\temp\ctest\fl1.txt"
file2 = "d:\temp\ctest\fl2.txt"
code1 = "UTF8"
code2 = "UTF7"

' テキストファイルをバイト配列で読込
Set objADOS = CreateObject("ADODB.Stream")
objADOS.Type = 1
objADOS.Open
objADOS.LoadFromFile file1
objADOS.Position = 0
dat1 = objADOS.Read()
objADOS.Close

' 漢字コードを指定してバイト配列を文字列に変換
Select Case code1
    Case "SJIS"    ' SJIS
        uni = objNonCode.SJIS_To_VbUnicode(dat1)
    Case "JIS"     ' JIS
        uni = objNonCode.JIS_To_VbUnicode(dat1)
    Case "EUC"     ' EUC
        uni = objNonCode.EUC_To_VbUnicode(dat1)
    Case "UNICODE" ' UNICODE
        uni = objNonCode.UNICODE_To_VbUnicode(dat1)
    Case "UTF7"    ' UTF-7
        str = objNonCode.UTF7_To_VbUnicode(dat1)
    Case "UTF8"    ' UTF-8
        uni = objNonCode.UTF8_To_VbUnicode(dat1)
    Case Else      ' SJIS
        uni = objNonCode.SJIS_To_VbUnicode(dat1)
End Select

' 文字列を出力したい漢字コードのバイト配列に変換
Select Case code2
    Case "SJIS"    ' SJIS
        dat2 = objNonCode.VbUnicode_To_SJIS(uni)
    Case "JIS"     ' JIS
        dat2 = objNonCode.VbUnicode_To_JIS(uni)
    Case "EUC"     ' EUC
        dat2 = objNonCode.VbUnicode_To_EUC(uni)
    Case "UNICODE" ' UNICODE
        dat2 = objNonCode.VbUnicode_To_UNICODE(uni)
    Case "UTF7"    ' UTF7
        dat2 = objNonCode.VbUnicode_To_UTF7(uni)
    Case "UTF8"    ' UTF8
        dat2 = objNonCode.VbUnicode_To_UTF8(uni)
    Case Else      ' SJIS
        dat2 = objNonCode.VbUnicode_To_SJIS(uni)
End Select

' 出力ファイルをバイナリ形式で出力
objADOS.Type = 1
objADOS.Open
objADOS.Write dat2
objADOS.SaveToFile file2, 2
objADOS.Close
' ---------------------------------------------------------

' ---------------------------------------------------------
' 漢字コード変換のサンプル(VBA)
Private Sub CommandButton1_Click()
    ' オブジェクト定義(事前準備:regsvr32 NonCodeVb6.dll)
    Set objNonCode = CreateObject("NonCodeVb6.NonCodeClassV")

    ' file1(SJIS)をfile2(JIS)に変換
    file1 = "d:\temp\ctest\fl1.txt"
    file2 = "d:\temp\ctest\fl2.txt"
    code1 = "UTF8"
    code2 = "EUC"

    ' テキストファイルをバイト配列で読込
    Set objADOS = CreateObject("ADODB.Stream")
    objADOS.Type = 1
    objADOS.Open
    objADOS.LoadFromFile file1
    objADOS.Position = 0
    dat1 = objADOS.Read()
    objADOS.Close

    ' 漢字コードを指定してバイト配列を文字列に変換
    Select Case code1
        Case "SJIS"    ' SJIS
            uni = objNonCode.SJIS_To_VbUnicode(dat1)
        Case "JIS"     ' JIS
            uni = objNonCode.JIS_To_VbUnicode(dat1)
        Case "EUC"     ' EUC
            uni = objNonCode.EUC_To_VbUnicode(dat1)
        Case "UNICODE" ' UNICODE
            uni = objNonCode.UNICODE_To_VbUnicode(dat1)
        Case "UTF7"    ' UTF-7
            uni = objNonCode.UTF7_To_VbUnicode(dat1)
        Case "UTF8"    ' UTF-8
            uni = objNonCode.UTF8_To_VbUnicode(dat1)
        Case Else      ' SJIS
            uni = objNonCode.SJIS_To_VbUnicode(dat1)
    End Select

    ' 文字列を出力したい漢字コードのバイト配列に変換
    Select Case code2
        Case "SJIS"    ' SJIS
            dat2 = objNonCode.VbUnicode_To_SJIS(uni)
        Case "JIS"     ' JIS
            dat2 = objNonCode.VbUnicode_To_JIS(uni)
        Case "EUC"     ' EUC
            dat2 = objNonCode.VbUnicode_To_EUC(uni)
        Case "UNICODE" ' UNICODE
            dat2 = objNonCode.VbUnicode_To_UNICODE(uni)
        Case "UTF7"    ' UTF7
            dat2 = objNonCode.VbUnicode_To_UTF7(uni)
        Case "UTF8"    ' UTF8
            dat2 = objNonCode.VbUnicode_To_UTF8(uni)
        Case Else      ' SJIS
            dat2 = objNonCode.VbUnicode_To_SJIS(uni)
    End Select

    ' 出力ファイルをバイナリ形式で出力
    objADOS.Type = 1
    objADOS.Open
    objADOS.Write dat2
    objADOS.SaveToFile file2, 2
    objADOS.Close
End Sub
' ---------------------------------------------------------

スポンサーサイト

ファイル差分一覧(ツール) | トップページへ戻る | PC監視スクリーンセーバー(ツール)

このページのトップに戻る

コメント

名前
題名
メールアドレス
WEBサイト
 
コメント
パスワード
  管理者にだけ表示を許可する

このページのトップに戻る

トラックバック

このページのトップに戻る