TL/DR: У меня есть план игры о том, как это сделать ниже; однако мне интересно, будет ли мой план оказаться слишком сложным и какие дополнительные соображения мне необходимо учесть, прежде чем погрузиться в строительство этого проекта. Хотя я не опытный программист, я НЕ прошу ввести код; Я прошу обратную связь от опытных программистов Word VBA относительно того, является ли моя идея/подход всей нашей огромной ошибкой.Использование VBA для управления несколькими определениями стилей в одном документе Word
У меня есть документ «шаблон» (еще не тип файла шаблона - я надеюсь создать его, как описано ниже) для отчета. Отчет разбит на несколько разделов:
Letter to the Client
Table of Contents
Section I
Title Page
Body
1.0
2.0
Section II
Title Page
Body
1.0
2.0
Appendix A
Title Page
Body
Appendix B
Title Page
Body
Я хочу, чтобы каждый из основных «metasection» (например, Письмо, раздел I, раздел II, Приложения), чтобы иметь различный стиль и форматирование. Это может быть достигнуто при наличии нескольких стилей для каждого metasection, например .:
Normal-Letter
Normal-SectionI
Normal-Appendices
Heading1-Letter
Heading1-SectionI
Heading1-Appendices
Это быстро становится неуправляемым.
Для того, чтобы пользователи не могли пройти через огромное количество стилей, чтобы найти правильный (и стоит отметить, что если пользователи этого отчета должны это сделать, они, вероятно, не будут использовать стили AT ALL), было бы неплохо, если бы у меня было то же имя стиля (например, Normal
), в зависимости от того, в каком разделе документа он находится. Или, по другому, я хотел бы, чтобы документ имел несколько наборов стилей в зависимости от того, на участке.
Цели для пользовательского опыта является:
- Пользователь просто применяет
Normal
стиля,Heading1
стиля и т.д., по мере необходимости. - Определения определений определенного раздела обновляются, когда стили редактируются с помощью диалогового окна
Modify Style
или другими способами. - Стили применяются автоматически и прозрачно при изменении стилей или при открытии, сохранении или печати документа.
- АЛЬТЕРНАТИВА: Если применение автоматического/прозрачного стиля оказывается слишком сложным, выполните процедуру стиля-приложения с помощью простой командной кнопки.
Моя первоначальная идея о том, как я мог бы сделать это в VBA является:
- Написать VBA код (возможно, класс), так что есть реестр стиль
Normal
с иHeading1
с, и т.д., для каждого раздела документа. - Напишите подпрограмму стиля-приложения, которая выполняет итерацию по зарегистрированным разделам документа, выбирает все части с каждым зарегистрированным стилем и применяет стиль раздела к стилю из реестра стилей (сохраняя любой стиль, который отличается от определения стиля).
- Напишите подпрограмму обновления стиля, которая автоматически и прозрачно обновляет зарегистрированные определения стилей
- Подпрограмма стиля-приложения выполняется в любое время, когда любой стиль применяется в любом из зарегистрированных разделов (так что мне нужно связать в Events здесь).
- Подпрограмма обновления стиля выполняется в любое время, когда изменяется определение стиля в зарегистрированном разделе (так что вот еще одно событие, которое мне нужно будет контролировать).
Я ранее asked a similar question об этой теме о суперпользователе. Полученная мной обратная связь заставила меня поверить, что я могу выполнить только поведение, которое я хочу использовать с помощью VBA, поэтому теперь я задаю следующий вопрос в Stackoverflow.
Мой вопрос: я делаю ошибку здесь? У меня есть чувство, что есть лучший способ решить эту проблему (возможно, используя VBA, возможно, нет), чем это.
Я знаю, что это не вопрос, который вы задаете, но если это все один документ, зачем вам нужны/нужны разные стили для каждого раздела? Простое чтение деталей в вашем вопросе заставляет меня думать, что вы направляетесь к кошмару управления документами, и это * без * включает конечных пользователей, которые не начнут понимать, как все это работает. –
хорошо, вы делаете хороший момент. Но цель состоит в том, чтобы сделать так, чтобы пользователи не знали, как это работает. кошмар управления документами - это то, что я сейчас имею, где каждая метасвязь содержится в отдельном документе. каждый раз, когда для отчета создается ревизия, должна создаваться новая копия каждого документа. перемещение всех отдельных документов в один документ вместе проделало бы долгий путь к пробуждению от этого кошмара. –
также, почему каждый раздел должен иметь разные стили, что выше моего уровня оплаты. Кто-то другой решил это для меня. –