2015-03-04 3 views
3

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), в зависимости от того, в каком разделе документа он находится. Или, по другому, я хотел бы, чтобы документ имел несколько наборов стилей в зависимости от того, на участке.

Цели для пользовательского опыта является:

  1. Пользователь просто применяет Normal стиля, Heading1 стиля и т.д., по мере необходимости.
  2. Определения определений определенного раздела обновляются, когда стили редактируются с помощью диалогового окна Modify Style или другими способами.
  3. Стили применяются автоматически и прозрачно при изменении стилей или при открытии, сохранении или печати документа.
  4. АЛЬТЕРНАТИВА: Если применение автоматического/прозрачного стиля оказывается слишком сложным, выполните процедуру стиля-приложения с помощью простой командной кнопки.

Моя первоначальная идея о том, как я мог бы сделать это в VBA является:

  1. Написать VBA код (возможно, класс), так что есть реестр стиль Normal с и Heading1 с, и т.д., для каждого раздела документа.
  2. Напишите подпрограмму стиля-приложения, которая выполняет итерацию по зарегистрированным разделам документа, выбирает все части с каждым зарегистрированным стилем и применяет стиль раздела к стилю из реестра стилей (сохраняя любой стиль, который отличается от определения стиля).
  3. Напишите подпрограмму обновления стиля, которая автоматически и прозрачно обновляет зарегистрированные определения стилей
  4. Подпрограмма стиля-приложения выполняется в любое время, когда любой стиль применяется в любом из зарегистрированных разделов (так что мне нужно связать в Events здесь).
  5. Подпрограмма обновления стиля выполняется в любое время, когда изменяется определение стиля в зарегистрированном разделе (так что вот еще одно событие, которое мне нужно будет контролировать).

Я ранее asked a similar question об этой теме о суперпользователе. Полученная мной обратная связь заставила меня поверить, что я могу выполнить только поведение, которое я хочу использовать с помощью VBA, поэтому теперь я задаю следующий вопрос в Stackoverflow.

Мой вопрос: я делаю ошибку здесь? У меня есть чувство, что есть лучший способ решить эту проблему (возможно, используя VBA, возможно, нет), чем это.

+0

Я знаю, что это не вопрос, который вы задаете, но если это все один документ, зачем вам нужны/нужны разные стили для каждого раздела? Простое чтение деталей в вашем вопросе заставляет меня думать, что вы направляетесь к кошмару управления документами, и это * без * включает конечных пользователей, которые не начнут понимать, как все это работает. –

+1

хорошо, вы делаете хороший момент. Но цель состоит в том, чтобы сделать так, чтобы пользователи не знали, как это работает. кошмар управления документами - это то, что я сейчас имею, где каждая метасвязь содержится в отдельном документе. каждый раз, когда для отчета создается ревизия, должна создаваться новая копия каждого документа. перемещение всех отдельных документов в один документ вместе проделало бы долгий путь к пробуждению от этого кошмара. –

+0

также, почему каждый раздел должен иметь разные стили, что выше моего уровня оплаты. Кто-то другой решил это для меня. –

ответ

5

Да, на мой взгляд, вы делаете ошибку. Я только что закончил проект, в котором я создал шаблон документа для компании. Мой опыт:

  • Пользователи различается по уровню знаний (очевидно)
  • пользователей высокого уровня не как более-инженерные файлов, потому что они не могут использовать свои собственные макросы, поскольку они могут конфликтовать с собственными макросами для каждого файла , они не могут использовать свои свойства документа или их собственные строительные блоки и т. д., поскольку они, вероятно, не будут совместимы с макросами (или, по крайней мере, они думают, что они не сработают, и покачаться, пока им не удастся их разбить)
  • пользователей низкого уровня запуганы автоматизмами и избегают их до тех пор, пока они могут (что означает, что их боссы не приказывают им использовать файл), после чего они начинают ненавидеть файл и w ork
  • Комплексные решения, подобные этой, обычно оставляются за несколько лет. Например. первоначальный разработчик меняет задания или переходит в другой отдел, и никто не понимает код, достаточный для управления им (особенно, если он не является хорошо документированным, хорошо написанным кодом, которого он не будет, поскольку вы не являетесь опытный программист VBA).
  • Разработчик (вы) будет наводнен (иногда ложными) сообщениями об ошибках и вопросами и небольшими запросами на изменение, которые становятся действительно раздражающими через несколько недель (поверьте мне об этом :)). Они не посмеют изменить размер шрифта, не посоветовавшись с вами, и в конце концов они попросят вас сделать это. Или, что еще хуже, они пытаются что-то изменить, сломать его, а затем попросить исправить ошибку.
  • Ваши пользователи не должны забывать использовать секционные тормоза или другие индикаторы, чтобы указать следующий раздел. Это слишком показательно для некоторых, слишком сложных, и если они случайно удалили индикатор раздела (который они неизбежно будут), все адские тормоза проиграют, а хуже всего:
  • Функция отмены будет отключена после каждого запуска макроса , Это, для большинства пользователей, является катастрофой. Вы не делаете этого для своих пользователей.

Таким образом, я бы сказал, не спускайтесь по маршруту макроса. Не используйте свойства Doc, которые не работали в компании, с которой я работал. (Фактически ИТ-компания, в основном пользователи высокого уровня :)). Пользователи высокого уровня будут создавать и использовать свои собственные свойства doc, для других это просто хлопот. Закладки постоянно удаляются, поэтому не идут ни.

Мой совет:

  • Использование стилей. Пользователи научатся быстро их использовать.
    • Получить достойный дизайн документа. Наличие 4 разных наборов заголовков, заголовков и обычных стилей в одном документе действительно непрофессионально. Консистенция важна, особенно поскольку это, кажется, письмо для вас.(Да, я знаю, ваша компания другая, и ваши боссы немые, и это особый случай, и ... и просто ... просто поговорим с дизайнером и посмотрим на ваш шаблон.)
    • Вы можете перейдите в раскрывающийся список «Галерея стилей» (Главная вкладка, центр) на основе шаблона - так что ваш шаблон загрузит используемые стили в раскрывающемся списке вверху и удалит все остальное. Это работает очень хорошо, и даже 20 стилей управляемы, если они хорошо известны.
  • Использование строительных блоки: заголовок страница, таблицы, предварительно записанные и отформатированные Quick части (юридический фетиш, введение компании, контакты и т.д.), верхние и нижние колонтитулы ...

и, если вы хотите, счастливые-счастливые и сотрудничества пользователей:

  • После создания пустой шаблон, создать полный шаблон:
    • пополняют докумен t с текстами, предварительно написанными параграфами, предварительно написанными заголовками, поэтому им нужно будет только щелкнуть и переписать, без необходимости форматировать или беспокоиться о стилях и титульных страницах и лоте
  • Обучать пользователей: 2 сеанса 1,5 часа Word класс может пройти долгий путь. Это необходимо.

Длинные сообщения. Последнее: создание сложного шаблона Word, вы будете плавать в море ошибок и раздражений Word. Даже без написания макросов это не будет прогулкой в ​​парке. (Я, например, отказался от того, чтобы мой TOC работал в Office 2013, так как после 3 дней и 10 версий он все равно продолжал создавать максимальный дополнительный абзац всякий раз, когда он был вставлен. Только в W2013. По-прежнему не знаю, почему, но я позволяю это.)

Независимо от того, что вы решили сделать, удачи и у вас много терпения! :)

+3

О, я просто прочитал комментарий о том, что кто-то выше вашего платного сайта решил, что нужно много стилей. Слушайте, оправдания IT - лучшие извинения. Просто скажите ему, насколько сложнее и непригоднее многообразный способ. Вручите слово и укажите числа об ограничениях. Объясните ему, что создание его идеи будет стоить 1 миллиард долларов и 5 лет, а также блестящий драгоценный камень и печень дракона. Если вы придерживаетесь основного форматирования, это дешево и быстро. Продолжайте обвинять Word и Microsoft. Помните, что вы разработчик. Это означает, что вы Мастер. И вы не спорите с Волшебниками. – vacip

+2

У меня есть аналогичный проект в прошлом, и я должен сказать пару советов. 1) Ожидайте, что многие из пользователей будут такими глупыми, что никогда не будут изучать стили использования независимо от того, насколько они легки, и если по чуду они все равно, они никогда не смогут использовать их в правильном месте. 2) Надежная конструкция - это то, где пользователь не обязан принимать решение о том, как все будет выглядеть, и все может быть предопределено. Пользователю только приходится беспокоиться о содержании, а не о внешности. 3) Блокировка - заблокируйте все, что можно заблокировать от редактирования. Каждая маленькая часть, которая может быть отредактирована, будет и будет использована неправильно. –

+2

4) Обычный пользователь, который говорит, что он знает и знаком со словом, обычно имеет возможность писать, полужирный, размер текста и сохранять документ. Многие пользователи даже не понимают, что стиль больше, чем просто внешний вид, и они не знают о них. Как заявил @vacip, очень важно обучить всех из них использовать и конкретно использовать этот единственный документ. 5) Объясните начальству, насколько сложно управлять обновлениями и изменениями в сложном документе, а не только создавать документ, который вам также придется менять время от времени. –