Ну что ж, примерно так это делается:
Sub OnListQuit()
Dim ff As FormField
Dim pt As Integer
Dim index As Long
'Проверяем существование закладки
If ActiveDocument.Bookmarks.Exists("ПолеСоСписком1") Then
'Запоминаем поле в закладке
Set ff = ActiveDocument.Bookmarks("ПолеСоСписком1").Range.FormFields(1)
'Если поле является выпадающим списком
If ff.Type = wdFieldFormDropDown Then
'Если документ защищён
If ActiveDocument.ProtectionType <> wdNoProtection Then
pt = ActiveDocument.ProtectionType 'Запоминаем тип защиты
ActiveDocument.Unprotect Password:="" 'Снимаем защиту. Если нужно указываем пароль
index = ff.DropDown.Value
ff.Range.Cells(1).Next.Range.Text = ff.DropDown.Value & " (" & _
ff.DropDown.ListEntries(index).Name & ")" 'записываем значение элемента списка в соседнюю ячейку
ActiveDocument.Protect pt, Password:="" 'Восстанавливаем защиту
ff.DropDown.Value = index 'Восстанавливаем выбранный элемент списка, т.к. он сбрасывается после восстановления защиты
End If
End If
End If
End Sub
В свойствах поля нужно указать макрос, который должен выполняться при выходе из поля. В защищённом документе выйти из поля можно клавишей TAB или щёлкнув мышкой в другом поле.
Post's attachmentsПример получения значения списка.docm 21.15 Кб, 36 скачиваний с 2011-02-01
You don't have the permssions to download the attachments of this post.
Лучше день потерять — потом за пять минут долететь!