My problem is, instead of filling the cells with d = 0.006 + k
every cell ends up as 0.006
I tried adding the: if (true) {...} in case I needed d to go out of scope, but it didn't work. Any ideas what the problem might be?
Other differences from the help article is I'm working with excel 2007 hence the "range.setValue2(...)". Also Visual C++ 6
Code:
range = sheet.GetRange(cell, cell);
range = range.GetResize(COleVariant(365L),COleVariant(1L));
// fill safe array value by value....
COleSafeArray saRet;
DWORD numElements[1];
numElements[0] = 365;
saRet.Create(VT_R8, 1, numElements);
long index[1];
long k;
//Fill the Safe Array with the column's data
for (k = 0; k < 365; k++)
{
index[0] = k;
if (true)
{
double d;
d = 0.006+k;
saRet.PutElement(index, &d);
}
}
range.SetValue2(COleVariant(saRet));
saRet.Detach();
// Make Excel visible
app.SetVisible(TRUE);
// Return control of Excel to user
app.SetUserControl(TRUE);
The values are all the same when they reach excel, i.e. I have a column full of 0.006's instead of 0.006, 1.006, 2.006... etc). From the ASSERT I added, I can see the values are correct within the SafeArray, but they all take on a single value (apparently the first value, i.e. safearray element 0) when I try to put give the array to excel with
Bookmarks