Ribbit.work

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

ExcelVBA

last modified date2021-9-7

publish date2021-8-16

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

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

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

この記事を読んだ方におすすめの記事

Excel VBAの高速化はこれだけでOK!コピペで使えるコードを紹介
2021-9-3

Excel VBAの高速化はこれだけでOK!コピペで使えるコードを紹介

VBA
ExcelからChatworkにメッセージを送る
2021-9-3

ExcelからChatworkにメッセージを送る

VBA
ExcelからChatworkのユーザ一覧を取得する
2021-9-3

ExcelからChatworkのユーザ一覧を取得する

VBA
VBAでマジックナンバーをスマートに消したい!
2021-9-1

VBAでマジックナンバーをスマートに消したい!

VBA
VBAでエラー処理とThrow処理を両方行う方法
2021-8-16

VBAでエラー処理とThrow処理を両方行う方法

ExcelVBA

最新の記事

特定のHTML要素のclassListを全て削除(リセット)する方法
2021-10-14

特定のHTML要素のclassListを全て削除(リセット)する方法

JavaScript
KintoneからChatworkのユーザ一覧を取得する
2021-9-15

KintoneからChatworkのユーザ一覧を取得する

JavaScriptKintone
TypeScriptで楽天ブックス書籍検索APIを使う📚
2021-9-13

TypeScriptで楽天ブックス書籍検索APIを使う📚

TypeScriptJavaScript
【kintone】Webフォントを適用する
2021-9-8

【kintone】Webフォントを適用する

KintoneJavaScript
KintoneからChatworkにメッセージを送る
2021-9-6

KintoneからChatworkにメッセージを送る

JavaScript