I. Для выполнения макроса нужна конкретная задача и алгоритм.
II. По поводу доступа к тезаурусу.
Общий доступ осуществляется через объект SynonymInfo например:
1. Создайте новый документ, наберите слово Планировать, выделите его или поставьте на нём курсор. Нажмите кнопку Тезаурус и у Вас появиться окно тезауруса. Оно нам понадобиться для сравнения.
2. В окне тезауруса мы видим, что у слова Планировать есть два основных синонима:
- Намереваться и родственные ему слова;
- Намечать и родственные ему слова.
Доступ к этим словам осуществляется через список свойства SynonymInfo.MeaningList вот функция возвращающая список:
Public Function SynonymList() As Variant
SynonymList = SynonymInfo(Trim(Selection.Words(1).Text)).MeaningList
End Function
Выражение Trim(Selection.Words(1).Text) возвращает текстовое значение 1-го слова выделения без пробелов.
В результате выполнения функции мы получаем результат:
SynonymList(1) = Намереваться
SynonymList(2) = Намечать
3. Теперь чтобы получить доступ к родственным словам каждого синонима нам надо воспользоваться свойством SynonymInfo.SynonymList для этого напишем функцию создающую список синонимов каждого слова из списка SynonymList:
Public Function SubSynonymList(SL As Variant, w As Integer) As Variant
Dim s As String
s = SL(w)
SubSynonymList = SynonymInfo(s).SynonymList(w)
End Function
SubSynonymList имеет 2 обязательных аргумента:
SL это наша функция SynonymList;
w это номер массива SynonymList
4. Имея эти 2-е функции SynonymList и SubSynonymList уже можно писать более сложные процедуры. Вот например процедура тестирующая наши функции:
Данная процедура выводит на экран информацию о выделенном слове Планировать, его первом синониме Намереваться и родственных ему словах:
Public Sub Test_Thesaurus()
Dim info As String, s As String, sn As String, subsn As String
If UBound(SynonymList) > 0 Then
s = Trim(Selection.Words(1).Text)
sn = SynonymList(1)
subsn = Join(SubSynonymList(SynonymList, 1), Chr(13))
End If
info = "Слово: " & s & Chr(13)
info = info & "Синоним 1: " & sn & Chr(13)
info = info & "Родственные слова:" & Chr(13)
info = info & subsn
MsgBox info
End Sub
5. Вот общий код модуля:
Public Function SynonymList() As Variant
SynonymList = SynonymInfo(Trim(Selection.Words(1).Text)).MeaningList
End Function
Public Function SubSynonymList(SL As Variant, w As Integer) As Variant
Dim s As String
s = SL(w)
SubSynonymList = SynonymInfo(s).SynonymList(w)
End Function
Public Sub Test_Thesaurus()
Dim info As String, s As String, sn As String, subsn As String
If UBound(SynonymList) > 0 Then
s = Trim(Selection.Words(1).Text)
sn = SynonymList(1)
subsn = Join(SubSynonymList(SynonymList, 1), Chr(13))
End If
info = "Слово: " & s & Chr(13)
info = info & "Синоним 1: " & sn & Chr(13)
info = info & "Родственные слова:" & Chr(13)
info = info & subsn
MsgBox info
End Sub
Вот вкратце ответ. Если есть вопросы или что непонятно пишите