중요: 주의 레지스트리를 잘못 편집하면 운영 체제가 심각하게 손상되어 다시 설치해야 할 수도 있습니다. Microsoft에서는 레지스트리를 잘못 편집하여 발생한 문제에 대한 해결 가능성을 보증하지 않습니다. 따라서 레지스트리를 편집하기 전에 중요한 데이터를 모두 백업해 두는 것이 좋습니다. 컴퓨터 레지스트리의 사용 및 보호 방법과 관련된 최신 정보를 확인하려면 Microsoft Windows 도움말을 참조하세요.
이 문서에서는 Microsoft Excel의 CALL, REGISTER, REGISTER.ID 함수에 사용되는 수식 구문과 이 함수를 사용하는 방법을 설명합니다.
참고: CALL 및 REGISTER 함수는 웹용 Excel 사용할 수 없습니다.
이 문서의 내용
설명
다음은 CALL, REGISTER, REGISTER.ID 함수에 사용되는 인수 및 반환 값 데이터 형식에 대한 설명입니다. 인수와 반환 값은 운영 환경에 따라 약간씩 다르며, 이러한 차이점이 데이터 형식 표에 나와 있습니다.
데이터 형식
CALL, REGISTER 및 REGISTER.ID 함수에서 type_text 인수는 반환 값의 데이터 형식과 DLL 함수 또는 코드 리소스에 대한 모든 인수의 데이터 형식을 지정합니다. type_text 첫 번째 문자는 반환 값의 데이터 형식을 지정합니다. 나머지 문자는 모든 인수의 데이터 형식을 나타냅니다. 예를 들어 부동 소수점 숫자를 반환하고 인수로 정수와 부동 소수점 숫자를 사용하는 DLL 함수는 type_text 인수에 "BIB"가 필요합니다.
다음 표에는 Microsoft 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 |
배열 |
참조 |
인수 세 개가 전달됨: unsigned short int * unsigned short int * double [ ] |
P |
Microsoft Excel OPER 데이터 구조 |
참조 |
OPER * |
R |
Microsoft Excel XLOPER 데이터 구조 |
참조 |
XLOPER * |
주의
-
C 언어 선언에서는 컴파일러의 기본 설정이 8바이트 실수(Double), 2바이트 정수(Short) 및 4바이트 정수(Long)라고 가정합니다.
-
Microsoft Windows 프로그래밍 환경에서 모든 포인터는 원거리 포인터입니다. 예를 들어 Microsoft Windows에서 D 데이터 형식 코드는 unsigned char far *로 선언해야 합니다.
-
DLL 및 코드 리소스의 모든 함수는 Pascal 호출 규칙을 사용하여 호출됩니다. 대부분의 C 컴파일러에서는 다음 예제와 같이 Pascal 키워드(keyword) 함수 선언에 추가하여 Pascal 호출 규칙을 사용할 수 있습니다 pascal void main (rows,columns,a)
-
함수에서 반환 값에 대해 참조 전달 방식의 데이터 형식을 사용하는 경우 NULL 포인터를 반환 값으로 전달할 수 있습니다. Microsoft Excel에서 NULL 포인터는 #NUM! 오류 값으로 해석됩니다.
추가 데이터 형식 정보
여기에서는 F, G, K, O, P 및 R 데이터 형식에 대한 자세한 내용과 type_text 인수에 대한 기타 내용을 제공합니다.
F 및 G 데이터 형식
함수에 F 및 G 데이터 형식을 사용하면 Microsoft Excel에서 할당하는 문자열 버퍼를 수정할 수 있습니다. 반환 값 형식 코드가 F나 G이면 함수가 반환한 값은 무시됩니다. 대신 함수의 인수 목록에서 해당하는 첫째 데이터 형식(F 또는 G)을 검색하고 할당된 문자열 버퍼의 현재 내용을 반환 값으로 사용합니다. Microsoft 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] 선언은 요소가 하나뿐인 배열의 저장 공간을 할당합니다. 실제 배열의 요소 수는 행 수를 열 수로 곱한 값과 같습니다.
O 데이터 형식
O 데이터 형식은 반환 값이 아닌 인수로만 사용할 수 있습니다. 배열의 행 수에 대한 포인터, 배열의 열 수에 대한 포인터, 부동 소수점 숫자의 2차원 배열에 대한 포인터 등 세 가지 항목을 전달합니다.
함수는 값을 반환하는 대신 O 데이터 형식으로 전달된 배열을 수정할 수 있습니다. 이렇게 하려면 ">O"를 type_text 인수로 사용할 수 있습니다. 자세한 내용은 아래의 "현재 위치 수정 - Void로 선언된 함수"를 참조하세요.
O 데이터 형식은 참조 방식으로 인수를 전달하는 Fortran DLL과 직접 호환됩니다.
P 데이터 형식
P 데이터 형식은 OPER 구조를 가리키는 포인터입니다. OPER 구조에는 8바이트 데이터와 데이터 형식을 지정하는 2바이트 식별자가 있습니다. P 데이터 형식을 사용하면 DLL 함수나 코드 리소스가 모든 Microsoft 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 필드에는 다음 값 중 하나가 포함됩니다.
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 |
빈 셀 |
마지막 두 값은 반환 값이 아니라 인수로만 사용할 수 있습니다. 호출자가 인수를 생략하면 누락된 인수 값(128)이 전달됩니다. 호출자가 빈 셀에 대한 참조를 전달할 때 빈 셀 값(256)이 전달됩니다.
R 데이터 형식 - DLL에서 Microsoft Excel 함수 호출
R 데이터 형식은 OPER 구조의 향상된 버전인 XLOPER를 가리키는 포인터입니다. Microsoft Excel 버전 4.0 이상에서는 Microsoft Excel 함수를 호출하는 DLL 및 코드 리소스를 R 데이터 형식으로 작성할 수 있습니다. XLOPER 구조를 사용하면 DLL 함수가 시트 참조를 전달하여 흐름 제어를 구현하는 동시에 데이터도 전달할 수 있습니다. 여기서 R 데이터 형식과 Microsoft Excel API(응용 프로그래밍 인터페이스)에 대해 자세히 설명하지는 않습니다. R 데이터 형식, Microsoft Excel API, Microsoft Excel의 다양한 기술적 측면에 대한 자세한 내용은 Microsoft Office XP Developer's Guide를 참조하세요.
잘못된 함수와 재계산
Microsoft Excel은 일반적으로 셀에 입력하거나, 선례 중 하나가 변경되거나, 매크로 중에 셀이 계산되는 경우에만 DLL 함수(또는 코드 리소스)를 계산합니다. 워크시트에서 DLL 함수 또는 코드 리소스를 휘발성으로 만들 수 있습니다. 즉, 워크시트가 다시 계산할 때마다 다시 계산됩니다. 함수를 휘발성으로 만들려면 느낌표(!)를 type_text 인수의 마지막 문자로 추가합니다.
예를 들어 Windows용 Microsoft Excel에서 다음 워크시트 수식은 워크시트를 다시 계산할 때마다 새로 계산됩니다.
CALL("Kernel32","GetTickCount","J!")
현재 위치에서 수정 - Void로 선언된 함수
type_text의 반환 형식 코드에 한 자리 숫자 n(1 - 9)을 사용할 수 있습니다. 그러면 Microsoft Excel에서 값을 반환하는 대신 type_text의 n번째 인수가 가리키는 위치의 변수를 수정합니다. 이것을 현재 위치에서 수정이라고도 합니다. n번째 인수는 참조 전달 방식의 데이터 형식(C, D, E, F, G, K, L, M, N, O, P 또는 R)이어야 합니다. 또한 DLL 함수나 코드 리소스는 void 키워드(C 언어)나 procedure 키워드(파스칼 언어)를 사용하여 선언해야 합니다.
예를 들어 NULL로 끝나는 문자열과 정수를 가리키는 두 포인터를 인수로 사용하는 DLL 함수는 문자열을 현재 위치에서 수정할 수 있습니다. "1FMM"을 type_text 인수로 사용하고 함수는 void로 선언합니다.
Microsoft Excel 4.0 이전 버전에서는 > 문자를 사용하여 첫 번째 인수를 수정했습니다. 첫 번째 인수 이외의 인수를 수정할 방법이 없었습니다. > 문자는 Microsoft Excel 버전 4.0 이상에서 n = 1과 같습니다.