I'm trying to fill an Excel range with an array.

my code is based on this article:
http://support.microsoft.com/kb/186120

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);