ZXing.Netを使ってVBAでQRコードを読む【保存版】

QR codeIT

ZXing.Netを使えば、VBAでQRコードを読めると分かった。
しかし、ググっても具体的な設定方法がなかなか見つからない。
いろいろ調べてやっと出来るようになったので、備忘の意味でもこちらでご紹介します。

エクセルでQRコードを読むということ

「QRコードを読む」と言えば「スマホでスキャン」ですが、QRコードの写真ファイル(png, jpg)をエクセルに読み込ませ、QRコードの中に入力されたデータを取り出すことができます。つまり、QRコードを読むことができます。

QRコードを読み込むことをデコード(decode)と言います。

エクセルでデコードができます。しかし、デコードの機能は、はじめからエクセルに無いため、デコードの機能追加設定しなければなりません。

この機能を使えば、写真に撮ったQRコード画面キャプチャのQRコードをエクセルで読んで、QRコードの中のデータ(文字列)を取り出すことができます。

設定方法は、以下をご参照ください。

デコード機能の設定方法

  1. GitHubから設定ファイルをダウンロード
  2. パソコン上で設定ファイルを登録
  3. エクセルで設定ファイルを登録

1. GitHubから設定ファイルをダウンロード

GitHubのZxing.Netから最新版をダウンロード
https://github.com/micjahn/ZXing.Net/releases

2.1 パソコン上で設定ファイルを登録

OSが64bitの場合

ダウンロードしたZIPファイル内のinteropフォルダから「zxing.dll」と「zxing.interop.dll」の2つのファイルを「C:\Windows\SysWOW64」フォルダへコピー

OSが32bitの場合

ダウンロードしたZIPファイル内のinteropフォルダから「zxing.dll」と「zxing.interop.dll」の2つのファイルを「C:\Windows\System32」フォルダへコピー

ZIPファイル
Excelが64bitの場合

以下の「最新フォルダ」を確認し、コマンドをメモ帳に準備

“C:\Windows\Microsoft.NET\Framework64\最新フォルダ\regasm.exe” /codebase zxing.interop.dll /tlb zxing.interop.tlb

Excelが32bitの場合

以下の「最新フォルダ」を確認し、コマンドをメモ帳に準備

“C:\Windows\Microsoft.NET\Framework\最新フォルダ\regasm.exe” /codebase zxing.interop.dll /tlb zxing.interop.tlb

エクセルが32bitの場合の例

2.2 コマンドプロンプトを管理者権限で起動

コマンドプロンプトを管理者権限で起動。

コマンドで、ディレクトリを移動する場合(System32からSysWOW64へ移動)は、「cd」コマンドを使う。

スタートボタンからコマンドプロンプトを探し、管理者として開く
OSが32bit、Excelが32bitの場合

「C:\Windows\System32」で「”C:\Windows\Microsoft.NET\Framework\最新フォルダ\regasm.exe” /codebase zxing.interop.dll /tlb zxing.interop.tlb」を実行

OSが64bit、Excelが32bitの場合

「C:\Windows\SysWOW64」で「”C:\Windows\Microsoft.NET\Framework\最新フォルダ\regasm.exe” /codebase zxing.interop.dll /tlb zxing.interop.tlb」を実行

OSが64bit、Excelが64bitの場合

「C:\Windows\SysWOW64」で「”C:\Windows\Microsoft.NET\Framework64\最新フォルダ\regasm.exe” /codebase zxing.interop.dll /tlb zxing.interop.tlb」を実行

OSが64bit、Excelが32bitの場合の例

3. エクセルで設定ファイルを登録

「zxing.interop.tlb」が作成されたことを確認

OSが64bitの場合

「C:\Windows\SysWOW64」のフォルダ内にあります。

OSが32bitの場合

「C:\Windows\System32」のフォルダ内にあります。

OSが64bitの場合の例
エクセルを開く
[Alt]+[F11]キーを押す
[ツール]タブ、[参照設定]を開き、「zxing.interop.tlb」が登録されていることを確かめる。
私の場合、「port of the….」という名前でした。

サンプルVBA

「Decode_QR_Code_From_File」のファンクションを実行することで、QRコードを読んでQRコード内のデータ(文字列)を返す。
strFilePthには、QRコードの画像データのフルパスを入れる。

例)Decode_QR_Code_From_File(“D:\test\qrcode.png”)

Function Decode_QR_Code_From_File(strFilePth As String)

    Dim reader As IBarcodeReader
    Dim res As Result

    Set reader = New BarcodeReader

    reader.Options.PossibleFormats.Add BarcodeFormat_QR_CODE

    Set res = reader.DecodeImageFile(strFilePth)

    Decode_QR_Code_From_File = res
    
    Set reader = Nothing
    Set res = Nothing

End Function