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 - Wikipedia

上記引用の通り、Base64 は現在でも幅広く使用されており、この他に Base16, Base32 などもあります。

MIME に規定されているため、VBA から使用する場合は、API の MIME タイプに Base64 が指定されている場合などに使用することとなります。

#Excel #VBA