ExcelでQRコードを表示させる

ブログ

アドインを導入してExcelでQRコードを表示させる

 最近ではQRコードを簡単に作れるWebサイトがあります。
 ただ、一度にたくさんのURLを処理したい場合などはExcelが便利です。

ExcelでQRコードを使うにはAccessのライブラリが必要

 ExcelでQRコードを表示させる方法としては、Officeにある「Microsoft BarCode Control」というライブラリを使用するのが一般的なようです。
 ただし、このライブラリはAccessに含まれているため、Access(ランタイム版も可)を導入しなければなりません。

 「QRコードを表示させるために、Accsessを導入するのはちょっと重いなー」

 という方のために、ここではGitHubにアップされているライブラリを導入する方法を紹介します。

GitHubにあるライブラリを導入する方法

 今回紹介するのは、こちらにある QRCodeLibVBA というライブラリです。

 このライブラリは、QRCodeLib.xlam というアドインを自分のExcelファイルで読み込ませるだけで導入できます。
 使い方のデモファイルも同梱されていますので、使い方を確認する事ができます。

 プログラム初心者の方でも導入できるように最小限のプログラムも紹介します。

ライブラリファイルのダウンロード

 まずブラウザで QRCodeLibVBA のサイトへ行き、必要なファイルをダウンロードしてきます。

 「Code」と書かれているところをクリックすると、「Download ZIP」という項目があるのでクリックしてファイルをダウンロードします。

 ファイルを解凍すると以下のように展開されます。

 README.md といファイルに使い方が書いてあります。テキストエディタで読めますので目を通しておくと良いでしょう。
 
 bin というフォルダ内に xlamファイル(ライブラリ) と xlsm ファイルがあります。
 xlsm ファイルは2つともサンプルファイルになります。

 そのままでも十分に使えるツールなのでそのまま使ってもOKですし、応用してたくさんのQRコードを出力できるようにしても良いでしょう。

サンプルファイル使用時の注意点

 サンプルファイルを保存する際に、以下のようなメッセージが表示されます。

「ドキュメント検査機能では削除できない個人情報がドキュメントに含まれている事がありますので、ご注意ください。」
 これは、ドキュメント検査機能がONになっていることで出てくるメッセージです。
 詳細は「ドキュメント検査機能とメッセージ」というページにまとめました。
 解除方法を簡単に解説します。

ドキュメント検査機能の解除方法

 Excelのメニュー「ファイル」から「情報」を選択します。
 「ブックの検査」という項目に「これらの情報をファイルに保存できるようにする」が表示されてますので、ここをクリックすればOKです。

サンプルプログラムを使ってみる

 bin フォルダ内にある WorksheetFunctionSample.xlsm には使い勝手の良いサンプルプログラムがあります。

 セルに数式として、 =QR(A1) などと入力すれば A1 にある文字列をQRコードにしてくれます。
 標準モジュールに、ファンクション関数として書かれているので、セル内のマクロとして実行可能です。
 もちろんブックには、QRCodeLib.xlam を導入していますので、自分で作るブックでは、アドインを導入する必要があります。

ライブラリを導入する方法

 アドインファイルであるxlamファイルを導入する方法を解説します。
 まず、ZIPファイルを解凍してできた bin フォルダ内の、QRCodeLib.xlam ファイルを任意の場所にコピーします。
 今回はわかりやすいように自分のファイルと同じフォルダ内にコピーしたものとして解説します。

 VBEを開いて、メニューの「ツール」から「参照設定」を開きます。
 一覧には入っていませんので、「参照」ボタンを押して、QRCodeLib.xlam を選択して「OK」とします。
 この時、拡張子を変更しておきます。

 「QRCodeLib」という項目が増えていますのでチェックを入れます。

 するとプロジェクトウインドウに QRCodeLib が追加されます。

 これで、ライブラリが使えるようになりました。

QRCodeLib を利用したプログラムを試す

  WorksheetFunctionSample.xlsm に書かれているプログラムは少し複雑なので、もう一つのサンプルである、 QRCodeLibDemo.xlsm のプログラムを参考にして簡単なコードを書いてみましょう。
 
 自分用のブックを作って、上記の方法で QRCodeLib を導入しておきます。
 ブックはマクロ有効の xlsm ファイルです。
 
 今回は、B2に文字列を入れると、シート上のイメージコントロールにQRコードを表示するプログラムを書きます。

シートにイメージコントロールを配置

 Excelメニューの「開発」>「挿入」から「ActiveX コントロール」の「イメージ」を選択します。

 B列の幅を広くして、イメージコントロールを配置します。
 VBEを開いて、プロパティウインドウにイメージコントロール(Image1)を表示させます。
 Excelの画面からイメージコントロールを選択すれば表示されるはずです。

 プロパティの「BackColor」を「&H00FFFFFF&」にします。
 (パレットで白色を選択すれば良いでしょう。)


 ここで、Excel画面の「開発」から「デザインモード」をOFFにしておきます。
 (OFFにするとイメージコントロールをクリックしても反応しなくなります。)

プログラムを記述

 今回はイベントプロシージャを使うのでSheet1モジュールにプログラムを記述します。
 プロジェクトウインドウのSheet1をクリックします。
 コード画面の上部から、「worksheet」「Change」を選択して、Changeイベントにプログラムを記述します。

  Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  End Sub 
 は、使いませんので消してください。
 プログラムは以下のようになります。
 QRCodeLibDemo.xlsm にあるプログラムを簡略化して書いてみました。

プログラムコード

Private Sub Worksheet_Change(ByVal Target As Range)
    '変更があったセルがB2で無ければ処理を終える
    If Intersect(Target, Me.Range("B2")) Is Nothing Then Exit Sub

    Dim s As String
    s = Me.Range("B2").Value

    'B2が空白の時はイメージコントロールも空白
    If Len(s) = 0 Then
        Me.Image1.Picture = LoadPicture("")
        Exit Sub
    End If
    
    'Symbolsクラスを生成して文字列を入れる
    Dim sbls As Symbols
    Set sbls = CreateSymbols()
    Call sbls.AppendText(s)

    'イメージコントロールの設定
    With Me.Image1
        .PictureAlignment = fmPictureAlignmentCenter    '画像表示中央
        .PictureSizeMode = fmPictureSizeModeStretch 'コントロールのサイズに合わせる
        .Picture = sbls(0).GetPicture() '画像をセット(デフォルト値)
    End With
End Sub

プログラム解説

 最初にイベントプロシージャで変更になったセルが Target に入っているので、B2以外の変更は処理を終えます。
 
 次に変更されたB2 が空白だったら、イメージコントロールも空白にします。
 
 文字列をQRコードにするには、Symbolsクラスを生成して文字列を入れてやります。

 最後にイメージコントロールの設定です。
 画像の表示方法を決めたら、 sbls(0).GetPicture() で画像データをイメージコントロールに流し込みます。

 QRCodeLibDemo.xlsm の方には、エラー処理などもありますが、ここでは理解しやすいように最小限必要な部分を抜き出しています。

動作確認

 B2に何か文字列を入れて実行してみてください。
 QRコードが表示されたら、スマホのカメラをかざして文字列が正しく表示されるか確認してみてください。
 
 QRコードが変化しない時は、デザインモードになっていないか確認しましょう。
 メニューの「開発」から「デザインモード」で確認できます。

まとめ

 今回は、GitHubにアップされているライブラリを使用してQRコードを表示する方法を解説しました。
 他にSQLなど有用なものがアップされていましたので、探してみると良いかもしれません。
 
 VBAでは、優秀なプログラマーのコードも見る事ができますので、プログラムコードを追ってみるのも勉強になります。
 ライブラリの導入の仕方を覚えれば、色々な事が出来るようになりますので是非挑戦してみてください。

コメント

タイトルとURLをコピーしました