IBM Lotus Symphony


Lotus Symphony Spreadsheets でのプログラミング用のアドイン

警告アイコン 以下で説明する Lotus® Symphony™ Spreadsheets のアドインによる拡張は、旧式の方法です。これらのインターフェースは、既存のアドインとの互換性を確保するために依然として有効で、サポートされていますが、新しいアドインのプログラミングには、新しい API 関数を使用してください。

Lotus Symphony Spreadsheets は、アドインによって拡張できます。アドインは、スプレッドシートを使用した作業のための追加機能を提供する外部プログラミングモジュールです。それらは、関数ウィザード[アドイン] カテゴリにリストされています。自分自身でアドインをプログラムしたい場合は、ここで、アドインを正常に接続するためにどの関数が外部 DLL によってエクスポートされる必要があるかを学習できます。

Lotus Symphony は、構成内に定義されたアドインフォルダから適切な DLL を検索します。DLL は、Lotus Symphony に認識されるためには、以下で説明するように、特定のプロパティを備えている必要があります。この情報を使用して、Lotus Symphony Spreadsheets関数ウィザード用に、独自のアドインをプログラムすることができます。

アドインの概念

ライブラリ内の各アドインは、いくつかの関数を提供します。一部の関数は、管理の目的で使用されます。 独自の関数には、ほとんど任意の名前を選択できます。ただし、パラメータの引き渡しに関して、特定の規則に従っている必要もあります。命名と呼び出しの正確な規則は、プラットフォームによって異なります。

アドイン DLL の関数

最小でも、管理関数 GetFunctionCount および GetFunctionData が存在する必要があります。これらを使用して、関数とパラメータ型、戻り値を判別できます。戻り値としては、倍精度型と文字列型がサポートされています。パラメータとしては、それらに加えてセル領域の倍精度配列、文字列配列、セル配列がサポートされています。

パラメータは、参照を使用して渡されます。したがって、これらの値の変更は基本的に可能です。しかし、これはスプレッドシート内では意味がないため、Lotus Symphony Spreadsheets ではサポートされていません。

ライブラリは実行時に再読み込みでき、ライブラリの内容は管理関数によって分析できます。関数ごとに、パラメータのカウントと型、内部および外部関数名および管理番号に関する情報を入手できます。

関数は同期的に呼び出され、即時に結果を返します。リアルタイム関数 (非同期関数) も可能ですが、複雑なので詳しくは説明しません。

インターフェースに関する全般情報

Lotus Symphony Spreadsheets に接続される 1 つのアドイン関数内でパラメータの最大数は 16 です。戻り値は 1 つで、最大15 個の関数入力パラメータを使用できます。

データ型は、以下のように定義されています。

表 1. データ型の定義
データ型 定義
CALLTYPE

Windows の場合: FAR PASCAL (_far _pascal)

それ以外の場合: デフォルト (オペレーティングシステム固有のデフォルト)

USHORT 2 バイトの符号なし整数
DOUBLE 8 バイトのプラットフォーム固有の形式
Paramtype

int のようにプラットフォーム固有

PTR_DOUBLE =0 : 倍精度値へのポインタ

PTR_STRING =1 : ゼロ終了文字列へのポインタ

PTR_DOUBLE_ARR =2 : 倍精度配列へのポインタ

PTR_STRING_ARR =3 : 文字列配列へのポインタ

PTR_CELL_ARR =4 : セル配列へのポインタ

NONE =5

DLL 関数

以下は、外部 DLL で呼び出される関数の説明です。

すべての DLL 関数で、以下が適用されます。

void CALLTYPE fn(out, in1, in2, ...)

出力: 結果の値

入力: 型 (double&、char*、double*、char**、セル領域) の数は任意。ここで、セル領域は倍精度配列、文字列配列、セル配列のいずれかの型の配列です。

GetFunctionCount()

参照パラメータの管理関数を除く関数の数を返します。 各関数には、0 から nCount-1 までの固有の番号があります。この番号は、あとで GetFunctionData 関数および GetParameterDescription 関数に必要になります。

構文

void CALLTYPE GetFunctionCount(USHORT& nCount)

パラメータ

USHORT &nCount:

出力: 変数 (これにはアドイン関数の数が入っていると考えられます) への参照。例えば、アドインが Lotus Symphony Spreadsheets に 5 つの関数を提供する場合は、nCount=5 になります。

GetFunctionData()

アドイン関数に関するすべての重要情報を判別します。

構文

void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)

パラメータ

USHORT& nNo:

入力: 0 以上 nCount-1 以下の関数番号。

char* pFuncName:

出力: プログラマに見える、DLL 内で指定された関数名。 この名前は、関数ウィザードで使用される名前を決定しません。

USHORT& nParamCount:

出力: アドイン関数内のパラメータの数。この数値は、常に結果値があるため、0 より大きくなければなりません。最大値は 16 です。

Paramtype* peType:

出力: 正確に 16 個の Paramtype 型変数からなる配列へのポインタ。最初のnParamCount エントリには、適合する型のパラメータが入っています。

char* pInternalName:

出力: ユーザーに見える、関数ウィザード内に表示される関数名。ウムラウトを含んでいる場合があります。

pFuncName パラメータと pInternalName パラメータは char 配列です。これらは Lotus Symphony Spreadsheets 内にサイズ 256 で実装されます。

GetParameterDescription()

アドイン関数とそのパラメータの簡単な説明を提供します。オプションとして、この関数を使用して、関数ウィザード内で関数とパラメータの説明を表示できます。

構文

void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)

パラメータ

USHORT& nNo:

入力: ライブラリ内の関数の番号 (0 から nCount-1 まで)。

USHORT& nParam:

入力: どのパラメータについての説明を提供するかを示します。パラメータは 1 から始まります。nParam が 0 の場合、説明自体は pDesc で提供されると考えられます。この場合、pName に意味はありません。

char* pName:

出力: パラメータの名前または型を取得します。例えば、「Number」、「String」、「Date」などの単語です。Lotus Symphony Spreadsheets では char[256] として実装されます。

char* pDesc:

出力: パラメータの説明を取得します。例えば、「Value, at which the universe is to be calculated.」などです。Lotus Symphony Spreadsheets では char[256] として実装されます。

pName および pDesc は char 配列で、Lotus Symphony Spreadsheets では 256 のサイズで実装されます。 関数ウィザードで使用可能なスペースには制限があり、256 文字を完全には使用できないことに注意してください。

セル領域

以下の表には、セル領域を渡すために、どのデータ構造体を外部プログラムモジュールによって提供する必要があるかについての情報が記載されています。Lotus Symphony Spreadsheets では、データ型に応じて 3 つの異なる配列が区別されます。

倍精度配列

パラメータとして、数値/倍精度型の値を持つセル領域を渡すことができます。Lotus Symphony Spreadsheets では、倍精度配列は以下のように定義されています。

表 2. 倍精度配列の定義
移動 名前 説明
0 Col1 セル領域の左上隅の列番号。番号付けは 0 から始まります。
2 Row1 セル領域の左上隅の行番号。番号付けは 0 から始まります。
4 Tab1 セル領域の左上隅の表番号。番号付けは 0 から始まります。
6 Col2 セル領域の右下隅の列番号。番号付けは 0 から始まります。
8 Row2 セル領域の右下隅の行番号。番号付けは 0 から始まります。
10 Tab2 セル領域の右下隅の表番号。番号付けは 0 から始まります。
12 Count 続く要素の数。空のセルはカウントされないか渡されていません。
14 Col 要素の列番号。番号付けは 0 から始まります。
16 要素の行番号。番号付けは 0 から始まります。
18 [Tab] 要素の表番号。番号付けは 0 から始まります。
20 エラー エラー番号。値 0 は「エラーなし」として定義されています。 要素が数式セルからのものである場合、エラー値は数式によって判別されます。
22 Value 倍精度/浮動小数点型の 8 バイトの IEEE 変数
30 ... 次の要素

文字列配列

データ型がテキストである値が入っており、文字列配列として渡されるセル領域。Lotus Symphony Lotus Symphony Spreadsheets では、文字列配列は以下のように定義されています。

表 3. 文字列配列の定義
移動 名前 説明
0 Col1 セル領域の左上隅の列番号。番号付けは 0 から始まります。
2 Row1 セル領域の左上隅の行番号。番号付けは 0 から始まります。
4 Tab1 セル領域の左上隅の表番号。番号付けは 0 から始まります。
6 Col2 セル領域の右下隅の列番号。番号付けは 0 から始まります。
8 Row2 セル領域の右下隅の行番号。番号付けは 0 から始まります。
10 Tab2 セル領域の右下隅の表番号。番号付けは 0 から始まります。
12 Count 続く要素の数。空のセルはカウントされないか渡されていません。
14 Col 要素の列番号。番号付けは 0 から始まります。
16 要素の行番号。番号付けは 0 から始まります。
18 [Tab] 要素の表番号。番号付けは 0 から始まります。
20 エラー エラー番号。値 0 は「エラーなし」として定義されています。 要素が数式セルからのものである場合、エラー値は数式によって判別されます。
22 Len 続く文字列の長さ。終了のゼロのバイトも含まれます。 終了のゼロのバイトを含む長さが奇数値になる場合は、偶数値になるよう、2 個目のゼロのバイトが文字列に追加されます。したがって、Len は ((StrLen+2)&~1) を使用して計算されます。
24 String ゼロのバイトで終了する文字列
24+Len ... 次の要素

セル配列

セル配列は、テキストと数値を含んでいるセル領域を呼び出すために使用します。Lotus Symphony Spreadsheets では、セル配列は以下のように定義されています。

表 4. セル配列の定義
移動 名前 説明
0 Col1 セル領域の左上隅の列番号。番号付けは 0 から始まります。
2 Row1 セル領域の左上隅の行番号。番号付けは 0 から始まります。
4 Tab1 セル領域の左上隅の表番号。番号付けは 0 から始まります。
6 Col2 セル領域の右下隅の列番号。番号付けは 0 から始まります。
8 Row2 セル領域の右下隅の行番号。番号付けは 0 から始まります。
10 Tab2 セル領域の右下隅の表番号。番号付けは 0 から始まります。
12 Count 続く要素の数。空のセルはカウントされないか渡されていません。
14 Col 要素の列番号。番号付けは 0 から始まります。
16 要素の行番号。番号付けは 0 から始まります。
18 [Tab] 要素の表番号。番号付けは 0 から始まります。
20 エラー エラー番号。値 0 は「エラーなし」として定義されています。 要素が数式セルからのものである場合、エラー値は数式によって判別されます。
22 Type セルの内容の型。0 == 倍精度、1 == 文字列
24 Value または Len

Type == 0 の場合: 倍精度/浮動小数点型の 8 バイトの IEEE 変数

Type == 1 の場合: 終了のゼロのバイトを含む、続く文字列の長さ。終了のゼロのバイトを含む長さが奇数値になる場合は、偶数値になるよう、2 個目のゼロのバイトが文字列に追加されます。したがって、Len は ((StrLen+2)&~1) を使用して計算されます。

26 if type==1 String Type == 1 の場合: ゼロのバイトで終了する文字列
32 または 26+Len ... 次の要素

製品フィードバック | その他の資料 | 商標