今日は、Micosoft Accessに付属する「Microsoft Barcode Control」を使って、プロデルでQRコードやバーコードを表示させてみたいと思います。
最新版プロデル 1.6.939以降では、「ActiveX部品」種類を継承することで、ActiveXコントロール(COMオブジェクト)をウィンドウ上に貼り付けることができるようになりました。
「Microsoft Barcode Control」は、ActiveXコントロールのひとつであり、少し工夫することでプロデル上でも部品として利用できます。
※この記事で紹介する内容は、確実に使える機能ではなく、環境やバージョンアップによって利用できない場合がありますのでご了承ください。Office2016や最新のOffice以外では、動作しないか一部機能が利用できない場合があります。
(2024/3/3追記) 記事全般を最新版2.0.1226に合わせて変更しました。
Microsoft Barcode Controlの利用
「Microsoft Barcode Control」は、複数の種類のバーコードを生成できる部品で、主にAccessやExcelで利用されています。この部品では、よく使われるJAN13形式やQRコードなどバーコードに気軽に作ることができます。
※「QRコード」は株式会社デンソーウェーブの登録商標です
プロデルの今回の例では、ActiveXで提供されているBarcode Controlを拝借してバーコードを作ってみようと思います。
なおMicrosoftのドキュメントでは、Microsoft Barcode ControlがAccess上で利用することのみを想定している、と書かれています。そのため、あくまでもAccessがインストールされたPCで利用する場合に限って使えます。
https://blogs.technet.microsoft.com/officesupportjp/2017/07/05/barcodecontrolforaccess/
またBarcode Controlを単独で配布することもできず、場合によっては部品の準備操作が必要なため、配布するアプリにバーコードを利用したい場合は、別途.NET向けのバーコードライブラリも検討して下さい。
なお、Accessがインストールされていない環境でも、無償提供されているAccessランタイムをインストールすることで、Barcode Controlがインストールできるようです。(田中様、情報提供ありがとうございます。)
準備
Microsoft Barcode Controlは、Microsoft Accessに含まれています。
AccessがインストールされていないPCではバーコードを作れません。
Microsoft Accessをインストール済みの場合でも、レジストリにActiveXが登録されていないために、エラーとなり利用できない場合があります。その時は、プロデルデザイナに次のプログラムを貼り付けて、保存した上で実行して下さい。このプログラムによってレジストリに登録されます。
※管理者実行
//(A) 64ビット版Windows/Officeの組み合わせ、32ビット版Windows/Officeの組み合わせの場合
「regsvr32 "C:\Program Files\Microsoft Office\root\Office16\MSBCODE9.OCX"」を起動する
//(B) 64ビット版Windowsかつ32ビット版Officeの組み合わせ場合
//「regsvr32 "C:\Program Files (x86)\Microsoft Office\root\Office16\MSBCODE9.OCX"」を起動する
パスは、PCやOfficeのバージョンによって異なります。VBAの参照設定でライブラリから「BARCODE」を選択した時に表示されるパスを指定するか、エクスプローラでMSBCODE9.OCXを検索してその場所を指定してください
また、インストールされているOffice(Access)のビット数に注意してください。(B)のようにパスにx86が含まれていた場合、64ビット版Windowsに、32ビット版Officeがインストールされています。その場合「プロデルデザイナ(32ビット版)」で、プログラムを実行する必要があります。
注意点
64ビット版Windows(Windows10以降)で、ActiveXを利用する場合は、プロデルデザイナ(プロデルのプログラム)を起動しているビット数とActiveX部品(OCX)のビット数が一致する必要があります。部品が32ビット向けの場合「プロデルデザイナ(32ビット版)」を起動する必要があります。また、実行可能ファイルもオプションにて「常に32ビットで起動する」にチェックするか、rdrc.exeで/x86オプションを指定する必要があります。
「ActiveX部品」種類の利用
「ActiveX部品」種類は、ActiveXコントロールを受け持つプロデルのラッパー種類です。
「COM型」種類では、部品を作ることができませんが、プロデル 1.6.939以降「ActiveX部品」を使うことでウィンドウ部品を作ることができるようになりました。
Barcode Controlは、設定項目が英単語であるため、プロデル向けに日本語名に置き換えた「バーコード部品」種類を定義しておきましょう。バーコード部品は、次のようなプログラムで定義しました。この「バーコード部品」は、ウィンドウ上に貼り付けられます。
「本体」は、ActiveXコントロールの本体を表します。VBAなどで説明されているメソッドやプロパティは、「本体」を通じて設定できます。なおプロデルでの制約上、イベントプロシージャは使用できません。メソッドおよびプロパティのみが利用できます。
バーコード部品とは
ActiveX部品を継承する
はじめ()の手順=(「BARCODE.BarCodeCtrl.1」)
終わり
スタイルという属性
取得する手順
本体のStyleを返す
終わり
設定する手順
本体のStyleは、設定値
終わり
終わり
内容という属性
取得する手順
本体のValueを返す
終わり
設定する手順
本体のValueは、設定値
終わり
終わり
終わり
バーコードを表示する
定義したバーコード部品は、ウィンドウの設計で対応していないので、部品を作る文を「はじめの手順」に書いておきます。
JAN13形式のバーコードを表示するには、メイン画面の「開いた時の手順」の中で、スタイルを2に設定します。また内容には、番号を指定します。
※次のプログラムを、先ほどの「バーコード部品とは」よりも前に貼り付けると完全なサンプルプログラムになります
メイン画面を表示する
待機する
メイン画面とは
ウィンドウを継承する
はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
バーコードというバーコード部品を作る
その大きさを{100,100}に変える
終わり
初期化する手順
ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
この設計スケール比率を{144,144}に変える
この内容を「メイン画面」に変える
初期化開始する
初期化終了する
終わり
開いた時の手順
バーコードのスタイルは、2
バーコードの内容は、4902777232577
終わり
終わり
//バーコード部品とは が続く
実行した際に「BARCODE.BarCodeCtrl.1というProgIDのActiveX部品は登録されていません。」というエラーになる場合は、冒頭に書いた「準備」ができていません。ご確認ください
QRコードを表示する
QRコードを表示するには、スタイルを11に設定します。内容には、半角英数字を指定します。URLやメールアドレスなどの情報に限り指定できます。この部品では、日本語は指定できないようです。
※「開いた時の手順」手順のプログラムを次のプログラムに書き換えるとQRコードを表示できます
バーコードのスタイルは、11
バーコードの内容は「https://produ.irelang.jp/」
読み取ってみる
スマートフォンをお持ちの場合は、バーコードリーダアプリでカメラからバーコードを読み取れます。もちろん市販のハンディタイプのリーダーでも読み取れます。
まとめ
QRコードなどのバーコードは、画面や印刷で気軽に情報をやりとりできます。またバーコードに対応するいろいろなアプリと組み合わせた利用方法を考えられるかと思います。AccessやExcelのVBAを使うような感覚でプロデルで作業管理アプリを作ってみるのはいかがでしょうか。