В отладчике видно что в Массив2 2 элемента "Петя","Вася". Но на листе екселя в обеих строках "Петя","Петя." Т.е. берет первый элемент и пихает его во все строки.
Range.Value - двумерный, поэтому COMSafeArray нужно тоже создавать двумерным, с количеством элементов по второму измерению - 1
COMSafeArray(массив,"VT_BSTR",2,1)
Кстати вызовы через COM/OLE довольно долгие
На больших объемах выгодней сохранить из 1С файлик типа csv и запустить VBA код, который прочитает его, заполнив книгу excel как надо
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан