2023/08/15

ノーツで QR コード:#6)Excel VBA から LotusScript に変換 その①

いよいよ今回から、QR コードを作成するプログラムをノーツで作成します。作業は、前回発見した、Excel VBA で記述された”モジュール”を LotusScript に移植するところから始めます。


スクリプトライブラリの作成

まずは、LotusScript のスクリプトライブラリ lsQRCode を新規作成して、Excel VBA のモジュールの中身を丸ごとコピペします。

当たり前ですが、エラーが発生します。

これらを順につぶしていきましょう。


Optional キーワードは使えない

このキーワードは、関数の引数の指定を任意にする機能を持ちます。このキーワードを設定すると、呼び出し元の関数で引数を省略しても、文法のエラーとはなりません。

例えば、NotesView クラスの GetDocumentByKey メソッドで、検索方式を完全位置させるか指定する2つ目の引数は、省略可能となっています。このような機能を提供するのが Optional キーワードです。

Set notesDocument = notesView.GetDocumentByKey(keyArray [, exactMatch%])

LotusScript では、このキーワードはサポートされていません。以前、Domino Ideas Portal に要望を投稿したのですが、残念ながら No Plans to Implement の判定を受けました。

Support optional keyword in Lotus Script

対応してもらえると、ライブラリ構築の柔軟性も増すし、便利な機能だと思うのですが、残念でなりません...


さて、本題に戻ります。今回の作業では、使用できないものは仕方がないので、Optional キーワードを削除します。要は引数の指定が必須となるということですね。

上記 3 か所以外に、8 か所ありますで、検索/置換機能を利用してすべて消去します。


ByRef キーワードは使えない

上記、対応が終わると、次のエラーが発生します。エラーの原因は ByRef です。

このキーワードは、引数を参照渡しと指定します(値渡しの場合は ByVal)。LotusScript では、ByRef キーワードは利用できません。ただし、省略した(ByValをしていない)場合のデフォルトが値渡しです。よって、この問題は、ByRef を削除するだけの対応となります。

ByRef については、上記 2 か所以外に、5 か所存在していましたので削除します。


予約語の変数名を変更

次は以下のエラーが発生します。

VBA では、Err という変数が定義できるようですが、LotusScript では同名の命令があるのでエラーとなります。

上図の通り、変数の定義でエラーが発生していますが、変数名を変更しても、変数名を使用している部分の変更も必要となりますので、置換機能を使用して Err を sErr に置換します。

同様に、err$ という変数も存在するので、sErr$ に置換します。ただ、変数使用時は”$”が付いていませんので、検索に頼りすぎないよう注意してください。

作業対象となる関数は、次の2つでした。

  • qr_gen
  • dmx_gen


作画機能をコメントアウト

このサンプルは QR コードをシートに作画していました。よって、作画する部分は Excel の機能を使いまくっていて、エラーが発生します。最終的に作画は Excel に頼らないので、文法エラーを調査する上で邪魔になります。

対象の関数は、次のように Excel のオブジェクトなど LotusScript で使用できないクラス名を使用しています。


これら関数を文法エラーが出ないようにコメントアウトします。関数全体をコメントアウトすると呼び出し元で、エラーが発生するので、関数の中身だけをコメントアウトします。

・・・

対象は、次の5つの関数となります。

  • bc_1D
  • bc_1Dms
  • bc_2D
  • bc_2Dms
  • drw


続きは次回...

ここまでの作業が完了すると、状況は次の通りとなりました。いたるところでエラーが出ていて、悪化しているようにさえ感じますね...

ただ少しづつは進んでいるので、気を取り直して作業を進めましょう。ただ、長くなったので、続きは次回とします。

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

0 件のコメント:

コメントを投稿