Имя: Пароль:
1C
 
COMSafeArray работает?
0 2mugik
 
20.06.24
13:04
Массив2 = Новый COMSafeArray(массив,"VT_BSTR",2);

           ExcelЛист.Range(ExcelЛист.Cells(1,Колонка),ExcelЛист.Cells(2,Колонка)).Value=Массив2;

В отладчике видно что в  Массив2 2 элемента "Петя","Вася". Но на листе екселя в обеих строках "Петя","Петя." Т.е. берет первый элемент и пихает его во все строки.
1 vde69
 
20.06.24
13:13
Range <> COMSafeArray
2 Garykom
 
20.06.24
13:19
(1) Можно код на VBS вероятно вызвать чтобы получить Range --> COMSafeArray
3 2mugik
 
20.06.24
13:58
Книга знаний: Быстрый вывод данных в Excel по OLE с помощью COMSafeArray.
       Вроде по книге знаний делал. Сейчас так не работает?
4 trad
 
20.06.24
14:22
Range.Value - двумерный, поэтому COMSafeArray нужно тоже создавать двумерным, с количеством элементов по второму измерению - 1
COMSafeArray(массив,"VT_BSTR",2,1)
5 2mugik
 
20.06.24
15:32
Спасибо, недопер.
6 Garykom
 
20.06.24
15:45
Как правильно из 1С запустить код в VBA Excel?
иногда полезно
сам код макросов для запуска можно программно
https://forum.infostart.ru/forum9/topic276203/
7 Garykom
 
20.06.24
15:47
Кстати вызовы через COM/OLE довольно долгие
На больших объемах выгодней сохранить из 1С файлик типа csv и запустить VBA код, который прочитает его, заполнив книгу excel как надо