Range / Свойство
Range.Value2
Значение2 — Значение без Currency и без Date: даты — числа OLE Automation.
Value2 As Variant
Когда использовать
Чтение и запись блоков в массив Variant. Быстрее Value. Для выгрузки из 1С обычно достаточно Value2, даты форматируйте NumberFormat.
Версии и среда
Excel 2007–365
Минимальный пример
Dim data As Variant
data = ws.Range("A2:D1000").Value2
ws.Range("A2").Resize(UBound(data, 1), UBound(data, 2)).Value2 = data
Типичный сбой
Дата 45400 выглядит «как число» — это нормально для Value2, не порча данных.
Рецепты
-
Прочитать диапазон в массив
Обойти тысячи ячеек в цикле слишком медленно.
-
Записать массив на лист за одно действие
Выгрузка из кода по ячейкам занимает минуты.
-
Когда Value, когда Value2, когда Text
Даты «превращаются в числа», суммы не сходятся, в коде то строка, то Date.
-
Выгрузка из 1С в Excel через COM
Из обработки 1С нужно открыть книгу, записать таблицу и не оставить процесс Excel.
Рядом в Range
Find Copy PasteSpecial ClearContents SpecialCells Value Text Formula