Excel

【Excel】VBAマクロでutf-8とsjisの変換(utf-16等の文字コード)する方法【ADODB.Stream, FileSystemObject】

当サイトでは記事内に広告を含みます。

この記事では、VBAマクロでutf-8とsjisの変換(utf-16等の文字コード)する方法について解説していきます。

ポイントとしてはADODB.StreamとFileSystemObjectの使用です。下記の解説では完全な初心者でもわかりやすいように、変数名を少々変わった名称にしています。

そのため実際のコードに使用する際は適切な表記にご変更くださいませ。

それでは詳しく見ていきましょう!

VBAマクロでxlsxファイルをutf-8からsjisに変換・出力する方法【SaveAsUTF8toSJIS】

それではまず、xlsxファイルをutf-8からsjisに変換・出力する方法について解説していきます。

Excelファイルの内容(utf-8形式)を読み取り、Shift-JIS形式で保存するマクロを作成します。

これにより、日本語が含まれるデータも問題なく扱うことができます。


Sub SaveAsUTF8toSJIS()
    Dim aaaaawsaaaa As Workbook
    Set aaaaawsaaaa = Workbooks.Open("C:\path\to\your\file.xlsx", True, True)
    
    ' UTF-8からShift-JISに変換するための設定
    Dim aaaaasavenameaaaa As String
    aaaaasavenameaaaa = "C:\path\to\your\newfile.xlsx"
    
    ' 新しいファイル形式で保存
    aaaaawsaaaa.SaveAs Filename:=aaaaasavenameaaaa, FileFormat:=xlWorkbookDefault, Local:=True
    aaaaawsaaaa.Close SaveChanges:=False
End Sub

 

Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。

コードのAlt+F8を押し、マクロ選択画面でSaveAsUTF8toSJIS関数を実行します。

このマクロは、Excelファイルを開いて、新しいファイル形式でShift-JISとして保存します。

VBAマクロでcsvファイルをsjisからutf-8に変換・出力する方法【ConvertSJISToUTF8】

続いては、csvファイルをsjisからutf-8に変換・出力する方法について解説していきます。CSVファイルを読み込み、UTF-8形式で再度保存するためのVBAマクロを作成します。


Sub ConvertSJISToUTF8()
    Dim aaaaapathaaaa As String, aaaaatextaaaa As String, aaaaafsoaaaa As Object
    aaaaapathaaaa = "C:\path\to\your\file.csv"
    Set aaaaafsoaaaa = CreateObject("Scripting.FileSystemObject")
    Dim aaaaatsaaaa As Object
    Set aaaaatsaaaa = aaaaafsoaaaa.OpenTextFile(aaaaapathaaaa, ForReading, False, TristateTrue)
    
    ' 文字列の読み込み
    aaaaatextaaaa = aaaaatsaaaa.ReadAll
    aaaaatsaaaa.Close
    
    ' UTF-8で書き出し
    Set aaaaatsaaaa = aaaaafsoaaaa.OpenTextFile(aaaaapathaaaa & "_utf8.csv", ForWriting, True, TristateTrue)
    aaaaatsaaaa.Write aaaaatextaaaa
    aaaaatsaaaa.Close
End Sub

 

Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。コードのAlt+F8を押し、マクロ選択画面でConvertSJISToUTF8関数を実行します。

このコードは、指定したCSVファイルを読み込んでUTF-8形式で保存・出力できるものとなっています。

 

VBAマクロでtxtファイルをutf-8からutf-16に変換・出力する方法【ConvertUTF8ToUTF16】

最後に、txtファイルをutf-8からutf-16に変換・出力する方法について解説していきます。


Sub ConvertUTF8ToUTF16()
    Dim aaaaapathaaaa As String
    aaaaapathaaaa = "C:\path\to\your\file.txt"
    
    Dim aaafstreamaaaa As Object
    Set aaafstreamaaaa = CreateObject("ADODB.Stream")
    aaafstreamaaaa.Type = 2 'テキストファイル
    aaafstreamaaaa.Charset = "utf-8"
    aaafstreamaaaa.Open
    aaafstreamaaaa.LoadFromFile aaaaapathaaaa
    
    ' UTF-16として保存
    aaafstreamaaaa.Charset = "utf-16"
    aaafstreamaaaa.SaveToFile aaaaapathaaaa & "_utf16.txt", 2
    aaafstreamaaaa.Close
End Sub

 

このマクロはテキストファイルの文字コードをutf-8からutf-16に変換し、新しいファイルとして保存できるものになっています。

 

まとめ VBAマクロで文字コードの変換(utf-8やutf-16やsjisなど)する方法【ADODB.Stream, FileSystemObject】

この記事では、VBAマクロでutf-8とsjisの変換(utf-16等の文字コード)する方法を確認しました。

マクロの扱いに慣れ、さらに快適な生活を送っていきましょう!