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