Про SAFEARRAY можно посмотреть здесь
SAFEARRAY Data Type
С датой/временем можно сделать так
1. Для получения значения из ячеек использовать range.value(10) вместо range.value2() (value2 для даты возвращает число с плавающей точкой)
2. Добавить в обработчик массива
X++:
case COMVariantType::VT_DATE:
info(strfmt("%1 %2", date2str(v.date(), 123, 2, 1, 2, 1, 4), time2str(v.time(), 1, 1)));
break;
Здесь есть такой момент: если формате ячейки указать вывод только для времени (например, такой "ч:мм:сс"), то вернется число с плавающей точкой