Excelの作業時、Webサービスからデータ取得をするためにBase64エンコードをする必要性があったので、対応方法の備忘録。
Excelの標準数式で、Base64エンコードができる関数は確認できなかったので、VBAとコマンドプロンプトによる方法です。
確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2406)です。
なお、Web上でBase64エンコードができるサービスもありますが、今回は「ログイン名:パスワード」のBase64エンコードだったので、念のためローカルPCでできるもので実施。
コマンドプロンプトを用いた方法
Windowsのcertutilコマンドでbase64エンコード・デコードができるとのこと。
certutil -f -encode "入力ファイル" "出力ファイル"
入力ファイルは、必要な文字コードで作成しておく。
なお、certutil.exe は、証明書サービスの一部としてインストールされるコマンドライン プログラムとのことです。
VBAを用いた方法
「Msxml2.DOMDocument.」、「ADODB.Stream」オブジェクトを利用してできます。以下のサンプルコードで実行できました。
Functionなので、そのままユーザー定義関数として使用も可能。
なお、UTF-8 BOMなしの場合は、BOMありで出力されるため頭3バイトを削除するため、上記の「エンコード(textをBASE64へ変換)」の部分を以下のように修正が必要と思われる(検証中)
'■エンコード(textをBASE64へ変換) node.DataType = "bin.base64" With obj .Type = 2 .Charset = "UTF-8" .Open .WriteText text .Position = 0 .Type = 1 .Position = 3 End With
以上、ExcelでBase64エンコードの方法でした。