この記事では、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等の文字コード)する方法を確認しました。
マクロの扱いに慣れ、さらに快適な生活を送っていきましょう!