ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Reading a Cell Value in C++ (with Autowrap) (https://www.excelbanter.com/excel-programming/376414-reading-cell-value-c-autowrap.html)

Christian Friedrich

Reading a Cell Value in C++ (with Autowrap)
 
Hi there,

i can't read a cell value in excel.

writing a cell value works fine with this:
int cell_value=12345;
{
VARIANT val;
val.vt = VT_I4;
val.lVal = cell_value;
my_manager-AutoWrap(DISPATCH_PROPERTYPUT, NULL, pXlRange, L"Value",
1, val);
}

but when i change the code to reading a cell value, it does not work:

VARIANT k;
k.vt= VT_BSTR;
{
VARIANT rVal;
VariantInit(&rVal);
my_manager-AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &rVal,
pXlRange, L"value", 0);
VariantCopy(&k, &rVal);
VariantClear(&rVal);
}
BSTR mybstr=k.bstrVal;
USES_CONVERSION;
char* myout = W2A(mybstr);
VariantClear(&k);

what's wrong?


Christian Friedrich

Reading a Cell Value in C++ (with Autowrap)
 
Problem solved, this does work:

char* myout;
char* myout2;
float fOut;

{
VARIANT rVal;
VariantInit(&rVal);
my_manager-AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &rVal,
pXlRange, L"value", 0);

switch (rVal.vt)
{
case VT_I2:
myout="VT_I2";
break;
case VT_I4:
myout="VT_I4";
break;
case VT_R4:
myout="VT_R4";
break;
case VT_R8:
myout="VT_R8";
fOut=rVal.dblVal;
break;
case VT_BSTR:
myout="VT_BSTR";
{
USES_CONVERSION;
myout2=W2A(rVal.bstrVal);
}
break;
default:
myout="Field type not supported.";
break;
}
VariantClear(&rVal);
}

Christian Friedrich schreef:

Hi there,

i can't read a cell value in excel.

writing a cell value works fine with this:
int cell_value=12345;
{
VARIANT val;
val.vt = VT_I4;
val.lVal = cell_value;
my_manager-AutoWrap(DISPATCH_PROPERTYPUT, NULL, pXlRange, L"Value",
1, val);
}

but when i change the code to reading a cell value, it does not work:

VARIANT k;
k.vt= VT_BSTR;
{
VARIANT rVal;
VariantInit(&rVal);
my_manager-AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &rVal,
pXlRange, L"value", 0);
VariantCopy(&k, &rVal);
VariantClear(&rVal);
}
BSTR mybstr=k.bstrVal;
USES_CONVERSION;
char* myout = W2A(mybstr);
VariantClear(&k);

what's wrong?




All times are GMT +1. The time now is 04:03 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com