CALL 関数と REGISTER 関数の使い方

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

重要: 注意    レジストリを誤って編集すると、オペレーティング システムに重大な障害が発生し、再インストールを要求される場合があります。Microsoft では、このようなレジストリの誤った編集による問題については保証していません。レジストリを編集する前に、重要なデータのバックアップを行ってください。レジストリの使用および保護の詳細については、Microsoft Windows ヘルプを参照してください。

ここでは、Microsoft Excel の CALLREGISTER、および REGISTER.ID の各関数の書式および使用法について説明します。

注: CALL 関数および REGISTER 関数は Excel Online では利用できません。

この記事の内容

説明

データ型

解説

その他のデータ型情報

データ型 F および G

データ型 K

データ型 O

データ型 P

データ型 R: DLL から Excel の関数を呼び出す

可変関数と再計算

指定した引数の変更: Void として宣言される関数

説明

次に示すのは、CALLREGISTERREGISTER.ID の各関数で使用される引数および戻り値のデータ型です。引数と戻り値は、動作環境によって若干異なります。この差異については、データ型の一覧で説明します。

ページの先頭へ

データ型

CALLREGISTERREGISTER.ID の各関数では、引数 "タイプ" によって、戻り値のデータ型、および DLL 関数またはコード リソースのすべての引数のデータ型を、半角の二重引用符 (") で囲んだ文字列として指定します。"タイプ" の先頭の文字では、戻り値のデータ型を指定します。残りの文字では、すべての引数のデータ型を指定します。たとえば、戻り値が浮動小数点数、引数が整数と浮動小数点数である DLL 関数は、"タイプ" 引数として "BIB" を取ります。

次の表は、Excel で認識されるデータ型のコードの一覧、各データ型の説明、引数または戻り値を渡す方法、および C 言語におけるそのデータ型の典型的な宣言を示しています。

コード

説明

渡す方法

C 言語での宣言

A

論理値
(FALSE = 0、TRUE = 1)

short int

B

IEEE 8 バイト浮動小数点数


(Windows)

参照 (Macintosh)

double
(Windows)

double * (Macintosh)

C

末尾が Null の文字列 (最大文字列長 = 255)

参照

char *

D

バイト数を含む文字列 (先頭バイトが文字列の長さ、最大文字列長 = 255)

参照

Unsigned char *

E

IEEE 8 バイト浮動小数点数

参照

double *

F

末尾が Null の文字列 (最大文字列長 = 255)

参照 (指定した引数の変更)

char *

G

バイト数を含む文字列 (先頭バイトが文字列の長さ、最大文字列長 = 255)

参照 (指定した引数の変更)

unsigned char *

H

符号なし 2 バイト整数

unsigned short int

I

符号付き 2 バイト整数

short int

J

符号付き 4 バイト整数

long int

K

配列

参照

FP *

L

論理値
(FALSE = 0、TRUE = 1)

参照

short int *

M

符号付き 2 バイト整数

参照

short int *

N

符号付き 4 バイト整数

参照

long int *

O

配列

参照

引数は次の 3 種類:
unsigned short int *
unsigned short int *
double [ ]

P

Excel の OPER データ構造体

参照

OPER *

R

Excel の XLOPER データ構造体

参照

XLOPER *

ページの先頭へ

解説

  • C 言語での宣言は、コンパイラの既定値として 8 バイトが double、2 バイトが short integer、4 バイトが long integer と設定されている場合を想定しています。

  • Microsoft Windows のプログラミング環境では、すべてのポインターが far 型となります。たとえば、Microsoft Windows では、データ型コード D を unsigned char far * として宣言する必要があります。

  • DLL とコード リソースの関数は、すべて Pascal 方式で呼び出されます。ほとんどの C コンパイラでは、関数宣言にキーワード Pascal を追加することでパスカル方式の呼び出しが可能になります。次に例を示します。pascal void main (rows,columns,a)

  • 戻り値に参照渡しのデータ型を使用している関数では、戻り値として Null ポインターを渡すことができます。Excel では、Null ポインターがエラー値 #NUM! として解釈されます。

ページの先頭へ

その他のデータ型情報

ここでは、F、G、K、O、P、R の各データ型、および引数タイプについて詳しく説明します。

データ型 F および G

データ型 F および G を使用すると、Excel によって割り当てられる文字列バッファーを関数で変更することができます。戻り値のコードが F または G の場合は、関数によって返された値が無視されます。代わりに、関数の引数の一覧から最初に対応するデータ型 (F または G) が検索され、割り当てられた文字列バッファーの現在の内容が戻り値として見なされます。Excel では引数に 256 バイトを割り当てるため、関数が受け取った文字列より長い文字列を返す場合があります。

ページの先頭へ

データ型 K

データ型 K では、可変サイズの FP 構造体へのポインターを使用します。この構造体は、DLL またはコード リソース内で次のように定義する必要があります。

typedef struct _FP
{
unsigned short int rows;
unsigned short int columns;
double array[1]; /* Actually, array[rows][columns] */
} FP;

宣言 double array[1] では、1 要素の配列に対してのみ記憶領域が割り当てられます。実際の配列における要素数は、行数に列数を掛けた値になります。

ページの先頭へ

データ型 O

データ型 O は引数としてのみ使用され、戻り値には使用されません。引数には 3 種類あります。つまり、配列内の行数へのポインター、配列内の列数へのポインター、および浮動小数点数の 2 次元配列へのポインターです。

関数では、値を返す代わりに、データ型 O によって渡される配列を変更することができます。そのためには、タイプ引数として ">O" を使用します。詳細については、次の「指定した引数の変更: Void として宣言される関数」を参照してください。

データ型 O は、引数を参照で渡す Fortran DLL との直接的な互換性を確保する目的で作成されたものです。

ページの先頭へ

データ型 P

データ型 P は、OPER 構造体へのポインターです。OPER 構造体には、8 バイトのデータに続いてデータ型を指定する 2 バイトの識別子が含まれます。データ型 P を使用すれば、DLL 関数またはコード リソースで、Excel のあらゆるデータ型を取り、また返すことができます。

OPER 構造体は、次のように定義されます。

typedef struct _oper

{
union
{
double num;
unsigned char *str;
unsigned short int bool;
unsigned short int err;
struct
{
struct _oper *lparray;
unsigned short int rows;
unsigned short int columns;
} array;
} val;
unsigned short int type;
} OPER;

type フィールドには、次のいずれかの値が格納されます。

データ型

説明

使用する val フィールド

1

数値

num

2

文字列 (先頭バイトは文字列長)

str

4

ブール値 (論理値)

bool

16

エラー。エラー値は次のいずれかです。

0#NULL!

7#DIV/0!

15#Value!

23#REF!

29#NAME?

36#NUM!

42#N/A

err

64

配列

array

128

引数の欠落

256

空白セル

最後の 2 つは引数としてのみ使用され、戻り値には使用されません。呼び出し側が引数を省略した場合は、引数の欠落を表す 128 が渡されます。呼び出し側が空白セル参照を渡した場合は、空白セルを表す 256 が渡されます。

ページの先頭へ

データ型 R: DLL から Excel の関数を呼び出す

データ型 R は、OPER 構造体の拡張版である XLOPER 構造体へのポインターです。Excel 4.0 以降では、データ型 R を使用して Excel の関数を呼び出す DLL とコード リソースを作成することができます。XLOPER 構造体を使用すれば、DLL 関数で、データの受渡し以外にシート参照の受け渡しやフロー制御の実現が可能になります。このトピックでは、データ型 R や Excel のアプリケーション プログラミング インターフェイス (API) について詳しく説明しません。データ型 R、Excel の API、および Excel に関するその他の技術情報については、『Microsoft Office XP Developer's Guide』で詳しく説明されています。

ページの先頭へ

可変関数と再計算

通常、Excel で DLL 関数またはコード リソースが計算されるのは、それらがセルに入力されるとき、その参照元のいずれかが変更されたとき、またはマクロの中でセルが計算されるときに限られます。ワークシート上で、DLL 関数またはコード リソースを可変にすることができます。つまり、ワークシートで再計算が行われるたびに DLL またはコード リソースも再計算されます。関数を可変にするには、タイプ引数の末尾に感嘆符 (!) を追加します。

たとえば Windows 版 Excel では、ワークシートが再計算されるたびに、次のようなワークシートの数式も再計算されます。

CALL("Kernel32","GetTickCount","J!")

ページの先頭へ

指定した引数の変更: Void として宣言される関数

タイプの戻り値のコードとして 1 桁の数字 n を使用することができます。この 1 から 9 までの数字 n を使って、値を返すのではなく、タイプの n 番目の引数で示される場所にある変数を変更するように指定できます。これは、指定した引数の変更とも呼ばれます。n 番目の引数は、参照渡しのデータ型 (C、D、E、F、G、K、L、M、N、O、P、または R) であることが必要です。また、DLL 関数やコード リソースを、C 言語の void キーワード (または Pascal の procedure キーワード) で宣言する必要があります。

たとえば、引数として末尾が Null の文字列および 2 つの整数へのポインターを取る DLL 関数では、指定した位置の文字列を変更することができます。この場合、タイプ引数として "1FMM" を使用し、関数を void として宣言します。

Excel 4.0 より前のバージョンでは、> 記号を使って最初の引数を指定して変更できるだけで、それ以外の引数を変更する方法はありませんでした。> 記号は、Excel 4.0 以降における n = 1 に相当します。

ページの先頭へ

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×