Office関連

ファイルをBase64エンコード・デコードするVBAマクロ

以前書いたファイルのBase64エンコード・デコード処理を行うVBAマクロをメモとして残しておきます。

Option Explicit

Public Sub Sample()
  Sheet1.TextBox1.Text = EncodeBase64("C:\Test\Sample.pdf")
  Debug.Print DecodeBase64(Sheet1.TextBox1.Text, "C:\Test\Sample_Decode.pdf")
End Sub

Private Function EncodeBase64(ByVal FilePath As String) As String
'ファイルをBase64エンコード
  Dim elm As Object
  Dim ret As String
  Const adTypeBinary = 1
  Const adReadAll = -1
  
  ret = "" '初期化
  On Error Resume Next
  Set elm = CreateObject("MSXML2.DOMDocument").createElement("base64")
  With CreateObject("ADODB.Stream")
    .Type = adTypeBinary
    .Open
    .LoadFromFile FilePath
    elm.DataType = "bin.base64"
    elm.nodeTypedValue = .Read(adReadAll)
    ret = elm.Text
    .Close
  End With
  On Error GoTo 0
  EncodeBase64 = ret
End Function

Private Function DecodeBase64(ByVal Base64Str As String, ByVal FilePath As String) As Long
'ファイルをBase64デコード
  Dim elm As Object
  Dim ret As Long
  Const adTypeBinary = 1
  Const adSaveCreateOverWrite = 2
  
  ret = -1 '初期化
  On Error Resume Next
  Set elm = CreateObject("MSXML2.DOMDocument").createElement("base64")
  elm.DataType = "bin.base64"
  elm.Text = Base64Str
  With CreateObject("ADODB.Stream")
    .Type = adTypeBinary
    .Open
    .Write elm.nodeTypedValue
    .SaveToFile FilePath, adSaveCreateOverWrite
    .Close
  End With
  If Err.Number <> 0 Then ret = 0
  On Error GoTo 0
  DecodeBase64 = ret
End Function

上記の通り、エラー処理は適当です。

関連記事

  1. Office関連

    関数一覧(Excel 2013)

    関数の挿入ダイアログから抽出したExcel 2013の関数情報を表にし…

  2. Office関連

    Office クリップボードをマクロで操作する(UI Automation)

    以前MSAAを利用してOffice クリップボードを操作するマクロを書…

  3. Office関連

    KB2553154の更新プログラムをアンインストールするVBScript

    2014/12/11 追記:当記事で紹介しているのは更新プログラム…

  4. Office関連

    Internet Explorer用OneNoteアドオンを利用して指定したWebページをOneNo…

    「Evernote Webクリッパーで指定したWebページをEvern…

  5. Office アドイン

    [Officeアドイン]テーブルやグラフを作成する方法(Excel)

    お久しぶりのOffice アドインの記事です。注目している人はほと…

  6. Office アドイン

    [Office用アプリ]マニフェストファイルで多言語対応させる。

    Office用アプリの各種設定を定義するXMLマニフェストファイルです…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP