Importante: Precaución Una modificación incorrecta del Registro podría causar graves daños en el sistema operativo e, incluso, forzar su reinstalación. Microsoft no puede garantizar que puedan resolverse los problemas resultantes de una modificación incorrecta del Registro. Antes de modificar el Registro, realice una copia de seguridad de todos los datos de valor. Para obtener la información más reciente sobre el uso y la protección del Registro de su equipo, vea la Ayuda de Microsoft Windows.
Este artículo describe la sintaxis de la fórmula y el uso de las funciones LLAMAR, REGISTRAR e ID.REGISTRO de Microsoft Excel.
Nota: Las funciones LLAMAR y REGISTRAR no están disponibles en Excel para la Web.
En este artículo
Descripción
A continuación se describen los tipos de datos de argumento y valor devuelto que usan las funciones LLAMAR, REGISTRAR y REGISTER.ID . Los argumentos y los valores devueltos varían ligeramente según el entorno operativo y estas diferencias se muestran en la tabla de tipos de datos.
Tipos de datos
En las funciones LLAMAR, REGISTRAR e ID.REGISTRO, el argumento tipo especifica el tipo de datos del valor devuelto y los tipos de datos de todos los argumentos para la función de la DLL o el recurso de código. El primer carácter del argumento tipo especifica el tipo de datos del valor devuelto. Los demás caracteres indican los tipos de datos de todos los argumentos. Por ejemplo, una función de DLL que devuelve un número de coma flotante y acepta un entero y un número de coma flotante como argumentos requiere el valor "BIB" como argumento tipo.
La tabla siguiente contiene una lista completa de los códigos de tipos de datos que reconoce Microsoft Excel, una descripción de cada tipo de datos, una descripción de la forma en que se pasa el argumento o el valor de retorno y una declaración típica de los tipos de datos en el lenguaje de programación C.
Código |
Descripción |
Se pasa por |
Declaración en C |
A |
Lógico (FALSO = 0), VERDADERO = 1) |
Valor |
short int |
B |
Número con coma flotante de 8 bytes IEEE |
Valor (Windows)Referencia (Macintosh) |
doble (Windows)double * (Macintosh) |
C |
Cadena terminada en valor nulo (longitud máxima de la cadena = 255 caracteres) |
Referencia |
char * |
D |
Cadena contada en bytes (el primer byte contiene la longitud de la cadena; longitud máxima de la cadena = 255 caracteres) |
Referencia |
Unsigned char * |
E |
Número con coma flotante de 8 bytes IEEE |
Referencia |
doble * |
F |
Cadena terminada en valor nulo (longitud máxima de la cadena = 255 caracteres) |
Referencia (modificar in situ) |
char * |
G |
Cadena contada en bytes (el primer byte contiene la longitud de la cadena; longitud máxima de la cadena = 255 caracteres) |
Referencia (modificar in situ) |
unsigned char * |
H |
Entero de 2 bytes sin signo |
Valor |
unsigned short int |
I |
Entero de 2 bytes con signo |
Valor |
short int |
j |
Entero de 4 bytes con signo |
Valor |
long int |
K |
Matriz |
Referencia |
FP * |
L |
Lógico (FALSO = 0, VERDADERO = 1) |
Referencia |
short int * |
M |
Entero de 2 bytes con signo |
Referencia |
short int * |
N |
Entero de 4 bytes con signo |
Referencia |
long int * |
O |
Matriz |
Referencia |
Se pasan tres argumentos: unsigned short int * unsigned short int * double [ ] |
P |
Estructura de datos OPER de Microsoft Excel |
Referencia |
OPER * |
R |
Estructura de datos XLOPER de Microsoft Excel |
Referencia |
XLOPER * |
Observaciones
-
Las declaraciones del lenguaje C se basan en el supuesto de que el compilador usa de forma predeterminada valores double de 8 bytes, valores short int de 2 bytes y valores long int de 4 bytes.
-
En el entorno de programación de Microsoft Windows, todos los punteros son punteros de tipo far (remoto). Por ejemplo, debe declarar el código de tipo de datos D como unsigned char far * en Microsoft Windows.
-
Todas las llamadas a funciones de archivos DLL y a recursos de código se realizan con la convención de nomenclatura Pascal. Casi todos los compiladores de C permiten usar la convención de nomenclatura Pascal añadiendo la palabra clave Pascal a la declaración de la función, como se muestra en el ejemplo siguiente: pascal void main (rows,columns,a)
-
Si una función usa un tipo de datos de paso por referencia para su valor devuelto, puede pasar un puntero nulo como valor devuelto. Microsoft Excel interpretará el puntero nulo como el #NUM. valor de error.
Información sobre tipos de datos adicionales
Esta sección contiene información detallada sobre los tipos de datos F, G, K, O, P y R y otras informaciones sobre el argumento tipo.
Tipos de datos F y G
Con los tipos de datos F y G, una función puede modificar un búfer de cadena que esté asignado por Microsoft Excel. Si el código de tipo de retorno es F o G, Microsoft Excel descarta el valor devuelto por la función. En lugar de este valor, Microsoft Excel busca en la lista de argumentos de función el primer tipo de datos correspondiente (F o G) y toma el contenido actual del búfer de cadena asignado como valor de retorno. Microsoft Excel asigna 256 bytes para el argumento, de forma que la función puede devolver una cadena más larga que la que recibió.
Tipo de datos K
El tipo de datos K usa un puntero para una estructura FP de tamaño variable. Debe definir esta estructura en el archivo DLL o recursos de código como sigue:
typedef struct _FP
{ unsigned short int rows; unsigned short int columns; double array[1]; /* Actually, array[rows][columns] */ } FP;
La declaración double array[1] únicamente asigna el almacenamiento para una matriz de un solo elemento. El número de elementos de la matriz real es igual al número de filas multiplicado por el número de columnas.
Tipo de datos O
El tipo de datos O solo puede usarse como argumento, no como valor de retorno. Pasa tres elementos: un puntero para el número de filas de una matriz, un puntero para el número de columnas de una matriz y un puntero para una matriz bidimensional de números de coma flotante.
En lugar de devolver un valor, una función puede modificar una matriz pasada por el tipo de datos O. Para ello, puede usar ">O" como argumento tipo. Para más información, vea más adelante "Modificar in situ. Funciones declaradas como Void".
El tipo de datos O se creó para que fuera compatible directamente con los archivos DLL Fortran, que pasan argumentos por referencia.
Tipo de datos P
El tipo de datos P es un puntero para una estructura OPER. La estructura OPER contiene 8 bytes de datos, seguidos por un identificador de 2 bytes que especifica el tipo de datos. Con el tipo de datos P, una función de DLL o recurso de códigos puede tomar y devolver cualquier tipo de datos de Microsoft Excel.
La estructura OPER se define como sigue:
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;
El campo Tipo contiene uno de estos valores.
Tipo |
Descripción |
Campo Val para usar |
1 |
Numérico |
num |
2 |
Cadena (el primer byte contiene la longitud de la cadena) |
str |
4 |
Booleana (lógica) |
bool |
16 |
Error: los valores de error son: 0#¡NULO! 7#¡DIV/0! 15#¡VALOR! 23#¡REF! 29#¿NOMBRE? 36#¡NUM! 42#N/A |
err |
64 |
Matriz |
matriz |
128 |
Falta argumento |
|
256 |
Celda vacía |
Los dos últimos valores solo pueden usarse como argumentos, no como valores de retorno. El valor de argumento no encontrado (128) se pasa cuando quien realiza la llamada omite un argumento. El valor de celda vacía (256) se pasa cuando quien realiza la llamada pasa una referencia a una celda vacía.
Tipo de datos R. Llamar a funciones de Microsoft Excel desde archivos DLL
El tipo de datos R es un puntero a una estructura XLOPER, que es una versión mejorada de la estructura OPER. En Microsoft Excel versión 4.0 y posteriores, puede usar el tipo de datos R para crear archivos DLL y recursos de código que llamen a funciones de Microsoft Excel. Con la estructura XLOPER, una función de DLL puede pasar referencias de hojas y efectuar control de flujo, además de pasar datos. La descripción exhaustiva del tipo de datos R y de la interfaz de programación de Microsoft Excel (API) queda fuera del ámbito de este tema. La guía Microsoft Office XP Developer's Guide (disponible solo en inglés) contiene información detallada sobre el tipo de datos R, la interfaz de programación de Microsoft Excel (API) y muchos otros aspectos técnicos de Microsoft Excel.
Funciones volátiles y actualización
Por lo general, Microsoft Excel calcula una función de DLL (o un recurso de código) solo cuando se especifica en una celda, cuando uno de sus precedentes cambia o cuando la celda se calcula durante una macro. En una hoja de cálculo puede convertir en volátil una función de DLL o un recurso de código; es decir, se actualiza cada vez que se actualiza la hoja de cálculo. Para hacer una función volátil, agregue un signo de exclamación (!) como último carácter del argumento tipo.
Por ejemplo, en Microsoft Excel para Windows, la fórmula de hoja de cálculo siguiente se actualiza cada vez que se actualiza la hoja de cálculo:
LLAMAR("Kernel32","GetTickCount","J!")
Modificar in situ. Funciones declaradas como Void
Puede usar un solo dígito n para el código de tipo devuelto en tipo, donde n es un número del 1 al 9. Esto indica a Microsoft Excel que modifique la variable en la ubicación indicada por el argumento enésimo de tipo, en vez de devolver un valor. Esto se conoce también como modificar in situ. El argumento enésimo debe ser un tipo de datos de pase por referencia (C, D, E, F, G, K, L, M, N, O, P o R). La función de DLL o el recurso de código debe poder declararse igualmente con la palabra clave void en lenguaje C (o la palabra clave procedure en lenguaje Pascal).
Por ejemplo, una función de DLL que toma una cadena terminada con carácter nulo y dos punteros a enteros como argumentos puede modificar la cadena in situ. Use "1FMM" como argumento tipo y declare la función como void.
Las versiones anteriores a Microsoft Excel 4.0 usaban el carácter > para modificar el primer argumento in situ: solo se podía modificar el primer argumento. El carácter > es equivalente a n = 1 en Microsoft Excel versión 4.0 y posteriores.