COMSafeArray заполняет эксель одним значением

1. marshalbratsk 25.04.24 18:20 Сейчас в теме
Делаю загрузку массивов в Эксель. Вот код:

//Получаем массив, которыми нужно заполнить данные
МассивДанных = ПолучитьМассивИзТаблицыДанных(Стр.ДанныеСтолбца);

//Создаем COMSafeArray на основании массива
МассивCOM = Новый COMSafeArray(МассивДанных,"VT_VARIANT");//, МассивДанных.Количество());

//Загружаем созданный COMSafeArray в выбранную область данных
ЛистПрайс.Range(ЛистПрайс.Cells(СтрокаНачалаДанных,Стр.НомерКолонки),ЛистПрайс.Cells(СтрокаНачалаДанных+МассивДанных.Количество()-1,Стр.НомерКолонки)).Value = МассивCOM;


После присвоения ЛистПрайс.Range(****).Value = МассивCOM в массив ЛистПрайс.Range(****).Value становится первое значение МассивCOM во всех 5 тысячах строк. Пробовал менять типы VT_VARIANT, не помогает.
скрин 1 - Данные МассивCOM
скрин 2 - данные ЛистПрайс.Range(****).Value до заливки в него МассивCOM
скрин 3 - данные ЛистПрайс.Range(****).Value после заливки
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Найденные решения
2. marshalbratsk 26.04.24 00:22 Сейчас в теме +0.65 $m
Как оказалось дело было в том, что массив необходимо транспонировать, чтобы заполнить область данных экселя по вертикали

МассивДанных = ПолучитьМассивИзТаблицыДанных(Стр.ДанныеСтолбца);

//Тут добавляем новый массив и первым элементом вставляем полученный ранее массив
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(МассивДанных);
МассивCOM = Новый COMSafeArray(МассивСтрок,"VT_VARIANT", 1,МассивДанных.Количество());
							ЛистПрайс.Range(ЛистПрайс.Cells(СтрокаНачалаДанных,Стр.НомерКолонки),ЛистПрайс.Cells(СтрокаНачалаДанных+МассивДанных.Количество()-1,Стр.НомерКолонки)).Value = МассивCOM;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. marshalbratsk 26.04.24 00:22 Сейчас в теме +0.65 $m
Как оказалось дело было в том, что массив необходимо транспонировать, чтобы заполнить область данных экселя по вертикали

МассивДанных = ПолучитьМассивИзТаблицыДанных(Стр.ДанныеСтолбца);

//Тут добавляем новый массив и первым элементом вставляем полученный ранее массив
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(МассивДанных);
МассивCOM = Новый COMSafeArray(МассивСтрок,"VT_VARIANT", 1,МассивДанных.Количество());
							ЛистПрайс.Range(ЛистПрайс.Cells(СтрокаНачалаДанных,Стр.НомерКолонки),ЛистПрайс.Cells(СтрокаНачалаДанных+МассивДанных.Количество()-1,Стр.НомерКолонки)).Value = МассивCOM;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот