Base64へのエンコード
にメンテナンス済み
Base64 とはエンコード方式の 1 つで、64 進数を意味する言葉です。言葉の通り、バイナリデータやテキストデータを 64 種類の文字で表現するエンコード方式です。
現在でも主にメールやソフトウェア、Web API など、様々な場面で使用されています。
このページでは VBA を使って、テキストデータから Base64 へ変換する方法を紹介いたします。
ソースコード
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 が指定されている場合などに使用することとなります。
#Excel
#VBA