shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】Base64エンコードの方法(VBA・コマンドプロンプト)

Excelの作業時、Webサービスからデータ取得をするためにBase64エンコードをする必要性があったので、対応方法の備忘録。

Excelの標準数式で、Base64エンコードができる関数は確認できなかったので、VBAとコマンドプロンプトによる方法です。

確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2406)です。

なお、Web上でBase64エンコードができるサービスもありますが、今回は「ログイン名:パスワード」のBase64エンコードだったので、念のためローカルPCでできるもので実施。

コマンドプロンプトを用いた方法

Windowsのcertutilコマンドでbase64エンコード・デコードができるとのこと。

certutil -f -encode "入力ファイル" "出力ファイル"

参考: WindowsでBase64エンコード/デコードする方法 #コマンドプロンプト - Qiita

入力ファイルは、必要な文字コードで作成しておく。

なお、certutil.exe は、証明書サービスの一部としてインストールされるコマンドライン プログラムとのことです。

learn.microsoft.com

VBAを用いた方法

「Msxml2.DOMDocument.」、「ADODB.Stream」オブジェクトを利用してできます。以下のサンプルコードで実行できました。

Functionなので、そのままユーザー定義関数として使用も可能。

vba-create.jp

なお、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

 

learn.microsoft.com

 

以上、ExcelでBase64エンコードの方法でした。