LibreOffice 25.2 ヘルプ
次に説明する、アドインを使用して Calc を機能強化する方法は古いものです。インタフェースは、既存のアドインとの互換性を確保するため、まだ有効であり、サポートもされていますが新しいアドインをプログラミングするには、新しい API 関数を使用する必要があります。
LibreOffice Calc can be expanded by Add-Ins, which are external programming modules providing additional functions for working with spreadsheets. These are listed in the Function Wizard in the Add-In category. If you would like to program an Add-In yourself, you can learn here which functions must be exported by the shared libraryexternal DLL so that the Add-In can be successfully attached.
LibreOffice searches the Add-in folder defined in the configuration for a suitable shared libraryDLL. To be recognized by LibreOffice, the shared libraryDLL must have certain properties, as explained in the following. This information allows you to program your own Add-In for Function Wizard of LibreOffice Calc.
各アドインライブラリには、複数の関数が用意されています。いくつかの関数は管理用です。自分で作成した関数には、規則に従った上で、任意の名前を付けることができます。しかし、パラメーターの引き渡しに関する一定の規則には従う必要があります。名前の付け方やパラメーターの引き渡しに関する正確な規則はプラットフォームごとに異なります。
少なくとも、管理用の関数 GetFunctionCount と GetFunctionData が存在する必要があります。これらの関数を使用すると、関数、パラメータの種類、および戻り値を判断できます。戻り値には、Double と String を使用できます。パラメーターには、Double と String 以外にも、Double 配列、String 配列、および セル配列 を使用できます。
パラメーターは参照として入力されます。そのため、基本的には値の変更が可能です。しかし、表計算プログラムにおいては適当でないため、LibreOffice Calc では値を変更することはできません。
ライブラリは実行時に読み込むことができます。このとき、管理用の関数を使用すると、ライブラリの内容を解析できます。どの関数でも、パラメーターの数と種類、内部関数名と外部関数名、および管理番号についての情報が使用できます。
関数が同時に呼び出されすぐに結果を返します。リアルタイム関数も可能ですが、複雑なためここでは詳しく説明しません。
LibreOffice Calc に組み込むことができるアドイン関数のパラメーターは最大で 16 個です。そのうちの 1 個は戻り値用で、残りの 15 個は入力用です。
データの種類は次のように定義されています。
| データの種類 | 定義 | 
|---|---|
| CALLTYPE | Windowsの場合: FARPASCAL(_far_pascal) それ以外の場合: default (各オペレーティングシステムの標準) | 
| USHORT | 2 Byte unsigned Integer | 
| DOUBLE | プラットフォームに応じた8バイトフォーマット | 
| Paramtype | int と同様、プラットフォーム特有 double を指すポインター PTR_DOUBLE =0 ゼロ制限した文字列を指定するポインター PTR_STRING =1 Double 配列を指すポインター PTR_DOUBLE_ARR =2 String 配列を指すポインター PTR_STRING_ARR =3 Cell 配列を指すポインター PTR_CELL_ARR =4 NONE =5 | 
Following you will find a description of those functions, which are called at the Shared Libraryexternal DLL.
For all Shared LibraryDLL functions, the following applies:
void CALLTYPE fn(out, in1, in2, ...)
Output: Resulting value
Input: Any number of types (double&, char*, double*, char**, Cell area), where the Cell area is an array of types double array, string array, or cell array.
管理関数を含まない関数の数を参照パラメーターに返します。どの関数にも 0 から nCount-1 までの番号が付いています。この番号は、後でGetFunctionData関数とGetParameterDescription関数に必要です。
構文
void CALLTYPE GetFunctionCount(USHORT& nCount)
パラメーター
USHORT &nCount:
Output: Reference to a variable, which is supposed to contain the number of Add-In functions. For example: If the Add-In provides 5 functions for LibreOffice Calc, then nCount=5.
アドイン関数に関するすべての重要な情報を定義します。
構文
void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)
パラメーター
USHORT& nNo:
Input: Function number between 0 and nCount-1, inclusively.
char* pFuncName:
Output: Function name as seen by the programmer, as it is named in the Shared LibraryDLL. This name does not determine the name used in the Function Wizard.
USHORT& nParamCount:
Output: Number of parameters in AddIn function. This number must be greater than 0, because there is always a result value; the maximum value is 16.
Paramtype* peType:
Output: Pointer to an array of exactly 16 variables of type Paramtype. The first nParamCount entries are filled with the suitable type of parameter.
char* pInternalName:
Output: Function name as seen by the user, as it appears in the Function Wizard. May contain umlauts.
パラメーター pFuncName と pInternalName は、LibreOffice Calc でサイズ 256 を実装した char Array です。
アドイン関数とそのパラメーターについての簡単な説明を提供します。この関数は 関数ウィザード で関数とパラメーターの説明を表示するのにも使用できます。
構文
void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)
パラメーター
USHORT& nNo:
Input: Number of the function in the library; between 0 and nCount-1.
USHORT& nParam:
Input: Indicates, for which parameter the description is provided; parameters start at 1. If nParam is 0, the description itself is supposed to be provided in pDesc; in this case, pName does not have any meaning.
char* pName:
Output: Takes up the parameter name or type, for example, the word "Number" or "String" or "Date", and so on. Implemented in LibreOffice Calc as char[256].
char* pDesc:
Output: Takes up the description of the parameter, for example, "Value, at which the universe is to be calculated." Implemented in LibreOffice Calc as char[256].
pName と pDesc は char 型の配列です。LibreOffice Calc はサイズ 256 で実装します。なお、関数ウィザード で使用できる空間は限られており、256 文字すべてを使用できるわけではないので注意が必要です。
次の表は、セル参照を入力するために、データ構造が必要とする外部プログラムモジュールを表しています。LibreOffice Calc は、データの型によってセル範囲を3種に分類します。
パラメーターに、数値/Double 型の値を含むセル範囲が指定できます。LibreOffice Calc では、Double 配列は次のように定義されています:
| 修正 | 名前 | 概要 | 
|---|---|---|
| 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 | Error | エラー番号。値 0 は「エラーなし」のために設定されています。該当要素が数式セルにある場合、エラー値は数式によって決まります。 | 
| 22 | Value | 種類がダブル/浮動小数点の8バイト IEEE 変数 | 
| 30 | ... | 次の要素 | 
データの型が文字列であるセル範囲は、String 配列として指定されます。LibreOffice Calc では、String 配列を次のように定義しています。
| 修正 | 名前 | 概要 | 
|---|---|---|
| 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 | Error | エラー番号。値 0 は「エラーなし」のために設定されています。該当要素が数式セルにある場合、エラー値は数式によって決まります。 | 
| 22 | Len | 次の文字列の長さ (最後の0バイトを含む) 。文字列の最後の0バイトを含めた長さが奇数値になった場合は、偶数値になるように0バイトがもう1つ追加されます。そのため、Len は ((StrLen+2)&~1) で計算されます。 | 
| 24 | String | 最後に0バイトが付いた文字列 | 
| 24+Len | ... | 次の要素 | 
セル配列を使用すると、テキストと数値を含むセル範囲を呼び出すことができます。LibreOffice Calc のセル配列は次のように定義されています。
| 修正 | 名前 | 概要 | 
|---|---|---|
| 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 | Error | エラー番号。値 0 は「エラーなし」のために設定されています。該当要素が数式セルにある場合、エラー値は数式によって決まります。 | 
| 22 | 種類 | セル内容の型、0 ==Double, 1 ==String | 
| 24 | Value or Len | Type ==0 の場合: ダブル/浮動小数点型の8バイト IEEE 変数 Type ==1 の場合: 次の文字列の長さ (最後の0バイトを含む) 。文字列の最後の0バイトを含めた長さが奇数値になった場合は、偶数値になるように0バイトがもう1つ追加されます。そのため、Len は ((StrLen+2)&~1) で計算されます。 | 
| 26 if Type==1 | String | Type ==1 の場合: 最後に0バイトが付いた文字列 | 
| 32 or 26+Len | ... | 次の要素 |