Dim app As OpiumLib.Application 'Описание указателя на приложение

Dim opium As OpiumLib.Document 'Описание указателя на активный документ

Sub OpiumTest()

    On Error Resume Next 'Подавляем системные сообщения об ошибках

                         'вместо них будем использовать свои

    Set app = New OpiumLib.Application 'Получаем указатель на приложение

    Set opium = app.ActiveDocument ' Получаем указатель на активный документ

    If opium Is Nothing Then 'Если указатель пуст

        MsgBox "Не удалось получить указатель на активный документ О!Пиум" _

        & vbCr & "Убедитесь, что программа запущена и открыт хотя бы один документ"

    Else 'Если все в порядке

        Dim list As Variant 'Переменная для списка имен

        list = opium.CRVNamesList 'Получаем список

        If VarType(list) = vbEmpty Then ' Диагностика

            MsgBox "Ошибка получения списка имен кривых"

        Else

            Dim strList As String, i As Integer 'Объявление переменной цикла и строки

            strList = "Список имен кривых:" & vbCr

            For i = 1 To UBound(list) 'UBound(list) возвращает кол-во имен в списке

                strList = strList + list(i) + vbCr 'Добавляем в цикле к строке

                                                   'имя + перевод строки

            Next i

            MsgBox strList 'Выводим сформированную строку

            Dim crvData As Variant 'Объявление переменной для данных

            crvData = opium.CRVGet(list(1)) 'Получение данных для кривой

                                            'Которая в списке имен первая

            If VarType(crvData) = vbEmpty Then 'Диагностика

                MsgBox "Ошибка получения данных для " & list(1)

            Else 'Если все нормально

                Dim emptyVal As Double 'Признак отсутствия информации

                emptyVal = opium.Empty 'Получаем из О!Пиум

                strList = "Список значений " & list(1) & vbCr

                For i = 1 To 20 'Распечатываем первые 20 значений

                                'Для распечатки всех используйте UBound(crvData)

                    'Заполнение строки глубина-значение + перевод строки

                    If crvData(i, 2) = emptyVal Then

                        strList = strList + Format(crvData(i, 1), "#0.0 - ") _

                        + "--нет--" + vbCr

                    Else

                        strList = strList + Format(crvData(i, 1), "#0.0 - ") _

                        + Format(crvData(i, 2), "#0.000") + vbCr

                    End If

                Next i

                MsgBox strList 'Вывод строки

            End If

        End If

    End If

    opium = Nothing 'Освобождаем указатели после использования

    app = Nothing

End Sub