|
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
|
|
|
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
|
|
|
7
Garykom
20.06.24
✎
15:47
|
Кстати вызовы через COM/OLE довольно долгие
На больших объемах выгодней сохранить из 1С файлик типа csv и запустить VBA код, который прочитает его, заполнив книгу excel как надо
|
|