2016-02-25 8 views
0

Надеюсь, что я задал этот вопрос правильным образом. У меня есть документ Word, используемый в моей корпоративной среде, который используют менеджеры для заполнения определенных элементов для развертывания активов. Они всегда не могут добавить определенную категорию в форму, поэтому я планирую внедрить два варианта с помощью элемента управления Drop Down List.Документ для форматирования Word ComboBox Выбор позиции до 1-го закрытия в VBA

Однако, когда документ открывается для с первого раза, я хочу заставить пользователя выбрать элемент из элемента управления DDL ПЕРЕД тем, чтобы сохранить/закрыть документ. Я хотел знать, возможно ли это изначально.

Так снова, , когда пользователь открывает документ впервые, они могут делать какие-либо другие изменения, или никаких изменений вообще, но они в принципе не может закрыть документ, пока выпадающий список не заполняется одним из два варианта. После того, как они делают выбор и сохраняют документ, выбор элемента сохраняется как постоянная переменная, и они могут открывать, редактировать или закрывать документ по своему усмотрению. Любые советы по выполнению этого?

ответ

0

Это возможно, но только надежно, если вы можете быть уверены, что другой код не может работать параллельно с вашим, что может аннулировать решение «не позволяйте ему закрыть».

Приложение Word имеет события, в том числе DocumentBeforeClose. Это вызывает для каждого документа, который получает команду «закрыть», пока событие активно. Событие позволяет делать все, что нужно сделать, прежде чем произойдет фактическое закрытие. Он включает аргумент, который позволяет ОТМЕНА закрыть.

Причина, по которой я упоминаю, что вам нужен полный контроль, заключается в том, что более одного контейнера кода может использовать событие, поэтому, действительно ли ОТМЕНА на самом деле происходит, когда вы говорите, что это должно зависеть от того, какой код выполняет последний. Пока вы можете быть уверены, что нет конфликта, мероприятие должно делать то, что вам нужно.

Предлагаемая документация на мероприятие: https://msdn.microsoft.com/en-us/library/office/ff834271.aspx. Он содержит пример кода, который демонстрирует, как работает событие, включая отмену. На этой странице также есть ссылка, в которой объясняется, как настроить события уровня приложения, если вы не знакомы с ними.

Некоторые конструктивные вопросы вы должны рассмотреть следующие вопросы:

  • Где разместить код: Лучше всего было бы, вероятно, будет в шаблоне, из которого генерируются документы, но есть и другие варианты
  • Когда/Как инициировать событие: возможно, в событии NewDocument шаблона или в макросе AutoNew. (Событие остановится, когда последний документ, созданный из шаблона, будет закрыт, поэтому, возможно, не стоит беспокоиться об этом.)
  • Как отличить, должен ли документ быть «захвачен» этим событием: если вы используете шаблон, лучше всего, вероятно, проверить его свойство AttachedTemplate и продолжить, только если AttachedTemplate является шаблоном с кодом.
  • Какие условия необходимо проверить в рамках мероприятия: вам нужен способ определить, является ли это в первый раз ... Что делает выбор в списках? Будет ли эффект, который этот код может проверить? Или было бы лучше записать что-то в документ в первый раз?
  • Возможно, вы также захотите проверить свойство Document.Saved, чтобы определить, были ли сделаны какие-либо изменения, требующие сохранения.