Directamente que yo sepa no se puede o al menos mirando la referencia no he encontrado nada que lo permita, aunque la referencia es tan grande que no puedo asegurar al 100% que no sea posible.Aunque tienes otra solución, que aunque no es tan completa porque con varios tipos te dirá que es un string, pero quizás te sirva.
Teniendo en cuenta el ejemplo anterior:
http://213.96.83.30/areabuilder/ubb/Forum1/HTML/003364.html
podemos modificar esta parte que se ve en el:
...
Variant vCelda = oHoja.OlePropertyGet( "Cells", fila, columna );
StringGrid1->Cells[columna][fila] = vCelda.OlePropertyGet( "Value" );
...
del siguiente modo:
int nTipo = vCelda.OlePropertyGet("Value").Type();
devuelve un número de tipo que se corresponde con esta lista (copiado de la ayuda, método Type de Variant)
code:
Variant type value Contents of variant
------------ ------ -------------------
varEmpty 0x0000 The variant is Unassigned.
varNull 0x0001 The variant is Null.
varSmallint 0x0002 16-bit signed integer (type short int)
varInteger 0x0003 32-bit signed integer (type int).
varSingle 0x0004 Single-precision floating-point value (type float)
varDouble 0x0005 Double-precision floating-point value (type double).
varCurrency 0x0006 Currency floating-point value (type Currency).
varDate 0x0007 Date and time value (type TDateTime).
varOleStr 0x0008 Reference to a dynamically allocated Unicode string.
varDispatch 0x0009 Reference to an OLE automation object
(an IDispatch interface pointer).
varError 0x000A Operating system error code.
varBoolean 0x000B 16-bit boolean (type WordBool).
varVariant 0x000C Indicates another Variant.
varUnknown 0x000D Reference to an unknown OLE object
(an IUnknown interface pointer).
varByte 0x0011 Indicates an unsigned char.
varString 0x0100 Reference to a dynamically allocated string
(type AnsiString).
varTypeMask 0x0FFF Indicates the type of each array element.
varArray 0x2000 Indicates a Variant array.
varByRef 0x4000 Indicates that the variant contains a reference
as opposed to a value.