【参照設定不要】Base64フォーマットにエンコードする

Base64とはエンコード方式の1つで、64進数を意味する言葉です。
現在でも主にメールやソフトウェア、Web APIで使用されることが多いです。
今回はVBAを使って、テキストデータからBase64へ変換する方法を紹介いたします。
ソースコード
'*-------------------------------------------------------------
'* テキストをBase64でエンコード
'*
'* @param text 変換する値
'* @return Base64フォーマットデータ
'*-------------------------------------------------------------
Public Function EncodeToBase64(ByRef text As String) As String
' オブジェクトの準備
Dim node As Object
Set node = CreateObject("Msxml2.DOMDocument.3.0").createElement("base64")
' エンコード
node.DataType = "bin.base64"
node.nodeTypedValue = ConvertToBinary(text)
' 関数で取り除けない改行を削除して返却
EncodeToBase64 = Replace(node.text, vbLf, "")
End Function
'*-------------------------------------------------------------
'* 文字列をバイナリデータに変換
'*
'* @param text 変換する値
'* @return バイナリデータ
'*-------------------------------------------------------------
Public Function ConvertToBinary(ByRef text As String)
' オブジェクトの準備
Dim BinaryStream As Object
Set BinaryStream = CreateObject("ADODB.Stream")
' Streamの設定
With BinaryStream
.Type = 2
.Charset = "us-ascii"
.Open
.WriteText text
.Position = 0
.Type = 1
.Position = 0
End With
ConvertToBinary = BinaryStream.Read
End Function
実行テスト
実行
Public Sub execute()
Debug.Print (EncodeToBase64("aaa"))
Debug.Print (EncodeToBase64("aab"))
Debug.Print (EncodeToBase64("aac"))
End Sub
結果
YWFh
YWFi
YWFj
Base64について補足
Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。具体的には、A–Z, a–z, 0–9 までの62文字と、記号2つ (+, /)、さらにパディング(余った部分を詰める)のための記号として = が用いられる。
上記引用の通り、Base64は現在でも幅広く使用されており、この他にBase16, Base32などもあります。
MIMEに規定されているため、VBAから使用する場合は、APIのMIMEタイプにBase64が指定されている場合などに使用することとなります。