1

Тема: Связанные поля в word

Всем доброго времени суток.

Прошу помощи, сам в VBA никогда не писал. Пытаюсь повторить вот этот пример http://wordexpert.ru/forum/viewtopic.ph … mp;login=1 . Но при попытке создать такой документ, VBA пишет ошибку "object doesn't support this property or method", указывая на строку  ActiveDocument.cmd_Отдел.List = lstСписокОтделов . работаю в MS Office 2010. Мне необходимо сделать похожий документ, где будет 3 различных списка формироваться исходя из предыдущего выбора.

Заранее всем спасибо

2

Re: Связанные поля в word

Хорошо, если разбить задачу на подзадачи, тогда вопрос такой -

Есть вот такой код в шаблоне Word:

Public Property Get lstСписокОтделов() As Variant ' Список Отделов
Dim lst(1 To 5) As String
    lst(1) = "Проектирование"
    lst(2) = "Сборка"
    lst(3) = "Доставка"
    lst(4) = "Маркетинг"
    lst(5) = "Бухгалтерия"
    lstСписокОтделов = lst
End Property

Private Sub Document_New ()
    ActiveDocument.cmd_Отдел.List = lstСписокОтделов
End Sub

Ошибка "object doesn't support this property or method" выводится на строке "ActiveDocument.cmd_Отдел.List = lstСписокОтделов". Как обратиться к существующему полю в документе ?

3

Re: Связанные поля в word

Походу разобрался в чём "соль" - элемент ComboBox должен быть ActiveX. Но тогда получается другая проблема, после сохранения шаблона  ComboBox остаётся, а мне надо, чтобы он при сохранении в doc больше не отображался, только в шаблоне, это возможно ?

4

Re: Связанные поля в word

minigo пишет:

Походу разобрался в чём "соль" - элемент ComboBox должен быть ActiveX. Но тогда получается другая проблема, после сохранения шаблона  ComboBox остаётся, а мне надо, чтобы он при сохранении в doc больше не отображался, только в шаблоне, это возможно ?

Разместите элемент ComboBox в созданной вами форме UserForm1, а в поле документа установите закладку bm_Отдел на место отображения выбранного значения. Пропишите команду показа формы в процедуру Document_New. Ваш код формирования списка ComboBox пропишите в процедуру инициализации созданной формы UserForm_Initialize. В процедуру закрытия формы впишите код присвоения закладке значения выбранного в ComboBox.
При создании нового документа форма будет открываться и вы сможете выбрать требуемое значение из списка. При закрытии формы выбранное значение займет положение закладки.

Private Sub Document_New()
    UserForm1.Show(vbModal)
End Sub

Private Sub UserForm_Initialize()
    cmd_Отдел.List = lstСписокОтделов
End Sub

Public Property Get lstСписокОтделов() As Variant ' Список Отделов
Dim lst(1 To 5) As String
    lst(1) = "Проектирование"
    lst(2) = "Сборка"
    lst(3) = "Доставка"
    lst(4) = "Маркетинг"
    lst(5) = "Бухгалтерия"
    lstСписокОтделов = lst
End Property

Private Sub UserForm_Terminate()
    ActiveDocument.Bookmarks("bm_Отдел").Range.Text = cmd_Отдел.Text
End Sub