ZXing.Netを使えば、VBAでQRコードを読めると分かった。
しかし、ググっても具体的な設定方法がなかなか見つからない。
いろいろ調べてやっと出来るようになったので、備忘の意味でもこちらでご紹介します。
エクセルでQRコードを読むということ
「QRコードを読む」と言えば「スマホでスキャン」ですが、QRコードの写真ファイル(png, jpg)をエクセルに読み込ませ、QRコードの中に入力されたデータを取り出すことができます。つまり、QRコードを読むことができます。
QRコードを読み込むことをデコード(decode)と言います。
エクセルでデコードができます。しかし、デコードの機能は、はじめからエクセルに無いため、デコードの機能追加設定しなければなりません。
この機能を使えば、写真に撮ったQRコードや画面キャプチャのQRコードをエクセルで読んで、QRコードの中のデータ(文字列)を取り出すことができます。
設定方法は、以下をご参照ください。
JAPAN &GLOBALeSIM
デコード機能の設定方法
- GitHubから設定ファイルをダウンロード
- パソコン上で設定ファイルを登録
- エクセルで設定ファイルを登録
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」フォルダへコピー

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


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」を実行

3. エクセルで設定ファイルを登録
「zxing.interop.tlb」が作成されたことを確認
OSが64bitの場合
「C:\Windows\SysWOW64」のフォルダ内にあります。
OSが32bitの場合
「C:\Windows\System32」のフォルダ内にあります。

エクセルを開く
[Alt]+[F11]キーを押す
[ツール]タブ、[参照設定]を開き、「zxing.interop.tlb」が登録されていることを確かめる。

サンプル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
JAPAN &GLOBALeSIM