Думаю, совсем должен понравиться 4-й вариант:
X++:
// ВАРИАНТ 4
// прописывание значений
range = xlApp.Range('test');
for (i=1;i<=10;i++)
{
// вставляем выше 'test'а строку с форматированием
doc.copyAndInsertRange('test');
// получаем объектную переменную для строки на одну выше 'test'а
range1 = range.Offset(-1,0);
// пишем в строку выше 'test'а
doc.insertValue( range1.Address(), i);
// range c 'test' на каждом шаге опускается ниже и ниже
// а range1 следует за ним строкой выше, олицетворяя собой новую вставленную строку
// которая рождается с исходными значениями 'test'а, а потом переписывается текущими
}
// в конце остается пустая строка с 'test', которую можно удалить
P.S. Добавил его в джоб выше.