Excel VBA で作成された QR コード生成ライブラリをノーツに移植する作業、延々と実施してきましたが、いよいよ大詰めです。
今回は移植できたライブラリを使用して、フォームに QR コードを表示します。
フォームの作成
まずは、QR コードをフォームに表示する仕様についてです。今回はライブラリの検証が目的なので、黒のマスを”■”、白のマスをスペースで表示するだけの単純な対応とします。
新規でフォーム ”QR” を作成し、以下のように作成します。
フィールドはテキストフィールドが2つだけです。ポイントは QR コードを表示するフィールド QRcode です。複数値を有効に設定し、区切り文字を”改行”に設定します。
もう一点が、QR コードの表示が崩れないよう、等幅フォントを指定します。今回は、MS ゴシックを選択しました。
エージェントの作成
続いて、QR コードを作成する処理をエージェントで作成します。
新規で、LotusScript のエージェント ”CreateQRcode” を作成し、移植したライブラリを呼び出します。メインルーチンの処理は次の通りです。
- QR コード化する文字列を入力
- エンコード文字列に変換(EncodeBarcode)
- Boolean 型の2次元配列に QR コードを展開(bc_2Dms)
- フォーム QR を作成し、QR コードを作画(CreateQRcodeDoc)
サンプルコードは次の通りです。
|
Option Declare Use "lsQRcode" Sub Initialize Dim sSrc As String Dim sEnc As String Dim iLv As Integer Dim abQR() As Boolean Dim asQR() As String iLv = 3 '誤り訂正レベル sSrc = InputBox("QRコードに変換する文字列を入力してください。", "QRコード作成") If MsgBox("『" & sSrc & "』の QR コードを作成しますか?", 36, "") = 6 Then sEnc = EncodeBarcode(sSrc, iLv) Call bc_2Dms(sEnc, abQR) Call CreateQRcodeDoc(sSrc, abQR) End If End Sub |
QR コードを作画する関数 CreateQRcodeDoc は、今回新規に作成し、エージェント内に配置しました。
QR コードの1行分を ”■” とスペースに変換しながら1つの文字列にします。それを行数分の配列に変換した後、フィールドにセットし、文書として保存しています。
|
Sub CreateQRcodeDoc(vsSrc As String, vabQR() As Boolean) Dim ns As New NotesSession Dim ndb As NotesDatabase Dim nd As NotesDocument Dim x As Integer Dim y As Integer Dim sTmp As String 'QR コードを文字列に変換 ReDim asQR(UBound(vabQR, 2)) For y = 0 To UBound(vabQR, 2) For x = 0 To UBound(vabQR, 1) If vabQR(x, y) = True Then sTmp = "■" Else sTmp = " " End If asQR(y) = asQR(y) & sTmp Next Next '文書に保存 Set ndb = ns.CurrentDatabase Set nd = ndb.CreateDocument() nd.Form = "QR" nd.StrSrc = vsSrc nd.QRcode = asQR Call nd.Save(True, False) End Sub |
エージェントを実行して、QR コードに変換したい文字列を入力すると、文書が作成されます。文書を開くと、QR コードが表示されます。
| 前回 | ノーツで QR コード | 次回 |



0 件のコメント:
コメントを投稿