2023/08/14

ノーツで QR コード:#5)元ネタ決定

QR コードを作成する方法は、今やいくらでも存在します。インターネット上のサービスを使用すれば簡単に作成できます。

ただ、今回はコーディング的な側面から見たいので、ライブラリを探してみます。ググってみると、Java や JavaScript、Python や PHP、C# や VB など、いっぱい出てきます。ただ、残念ながら LotusScript のライブラリは見つかりません...

仕方がないので、Excel VBA のサンプルを調査します。Microsoft Access 2016 Runtime に付属する「Microsoft BarCode Control」を使用したネタが多いですね。出来合いのコントロールを使用して作成しても面白くないので排除します。

最終的に以下のサイトのたどり着きました。全角文字に対応していて、文字数の制限が少なく(=大きな QRコードに対応)、Excel VBA だけで記述されたサンプルとなっています。

EXCELのVBAだけでQRコード。一部修正して日本語(全角)でも作成可能に。サンプルのエクセルファイルあり。


サンプルの動作

まずは、サンプルをダウンロードして実行してみます。Excel ファイルを開き、QR コード化したい文字列を”入力”シートの黄色のセルに入力します。

その下にある大きなボタンをクリックすると、QR コードに変換され、”QR”シートに表示されます。

Excel 方眼紙の1つのセルを QR コードの1マスとして扱う仕様になっていますね。塗りつぶすセルには 1 をセットし、条件付き書式で塗りつぶして QR コードとして表示しています。


サンプルプログラムの確認

それでは、このサンプルプログラムのコードを確認しましょう。[マクロの表示] で、このシートの VBA を確認します。

ます、入力シートのボタンを確認します。ざっくりいうと EncodeBarcode という関数をコールしているだけですね。

そして、EncodeBarcode 関数をはじめすべてのコードは Module1 という標準モジュール内に格納されています。


今後の展開

ここから先は、このサンプルをノーツに移植する手順の紹介となります。

Excel コードを LotusScript に変換する際には、プラットフォームの違いによるさまざまな問題が発生します。その事例の紹介も兼ねて、解説を進めます。


なお、このライブラリの先頭には以下の通り MIT ライセンスの表示がありました。

This software is distributd under The MIT License (MIT)
Copyright ゥ 2013 Madeta a.s. Jiri Gabriel
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

MIT ライセンスなので、改変も再配布も可能と判断しました。ただ、コードが膨大ですので、全体のコードは公開せず、必要となった作業を順に解説します。

ご了承ください。

前回 ノーツで QR コード 次回

0 件のコメント:

コメントを投稿