|  | 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 как надо
 |  |