こんばんは!今回の記事では、Microsoft BarCode Contorolを利用して作成したQRコードの値(Value値)を取得するVBAマクロを紹介します。
Microsoft BarCode Contorolを使ってQRコードを作成して、値の確認が読み取った時にしか確認できないな、と思いました。QRコードに埋め込んだ文字が何だったのか、確認したり表示させておきたい時に使える以下の2つのマクロサンプルを紹介しています。
- テキストボックスにフォーカス時にQRコードの値を表示する
- QRコード下のテキストボックスにQRコードの値を常に表示する
それでは、いってみましょう!
テキストボックスのフォーカス時にQRコードの値を表示する
まずは、Sheet1のテキストボックスにフォーカスすると、QRコードの内容をテキストボックスに表示するというマクロサンプルを紹介します。フォーカスを外す(テキストボックス以外の場所をクリック)すると、空欄に戻るようにしています。
前提
Sheet1にQRコード(オブジェクト名:BarCodeCtrl1)とActiceXのテキストボックスを配置(オブジェクト名:TextBox1)しておきます。
VBAマクロサンプル
QRコードにフォーカスした時(GotFocus)にQRコードの値を取得して、テキストボックスに表示させますフォーカスを外した時(LostFocus)にはテキストボックスを空欄にします。
Private Sub TextBox1_GotFocus()
ActiveSheet.OLEObjects("TextBox1").Object.Value = ActiveSheet.OLEObjects("BarCodeCtrl1").Object.Value
End Sub
Private Sub TextBox1_LostFocus()
ActiveSheet.OLEObjects("TextBox1").Object.Value = ""
End Sub
マクロはボタン押下タイミングで実行でも良いと思いますし、イベントプロシージャ―に合わせた(ファイルを開く、セルを選択、セルの値を変更する)タイミングで実行でも、お好きなタイミングに書き換えれば使えるかと思います。
Sheet1に配置したオブジェクトに対してのコードなので、マクロのSheet1(Sheet1)のコードに記載します。
注意点
GotFocusやLostFocusイベントについては、デザインモード表示ではマクロが動かない(何も反応ない)ので表示モードは気をつけておくと良いかもです。
QRコード下のテキストボックスにQRコードの値を常に表示する
次は、Excelファイル(Workbook)を開いた時に、QRコードの値を読み込んで直下のテキストボックスに表示するマクロサンプルの紹介です。
前提
Sheet1にQRコード(オブジェクト名:BarCodeCtrl1)とActiceXではないテキストボックスを配置(オブジェクト名:TextBox1)しておきます。※テキストボックスがActiveXではないので、ObjectではなくShapeとして扱うことになります。
VBAマクロサンプル
Excelファイル(Workbook)を開いたときに、TextBox1にQRコードの値を入れて表示しています。
Private Sub Auto_Open()
ActiveSheet.Shapes("TextBox1").TextFrame.Characters.Text = ActiveSheet.OLEObjects("BarCodeCtrl1").Object.Value
End Sub
WorkBookが開いたときに対する処理なので、ThisWorkbookのコードに記載します。
注意点
QRコードとテキストボックスの配置位置についてですが、QRコードについては読み取り時に余白を設けておいた方が良さそうです。詳しくは以下ページを参考にしてみてください。
さいごに
いかがだったでしょうか。Excelで生成したQRコードの値を表示させるVBAマクロってどうやって記述するのかな?と疑問を持たれた方の参考になれば幸いです。