Мне нужно создавать документы (~ 150 отчетов, писем), в основном из уже существующих фрагментов и локальных баз данных, с VBA в Word 2003. Затем мне нужно изменить определенные части этих фрагментов, такие как даты, фразы, информация о пользователе и т. д. Также, очевидно, есть некоторые биты, которые я сгенерирую в своей программе.
В настоящее время эту же задачу выполняет (вроде) какой-то отвратительный устаревший VBA. (Вложенные IF и FOR, и более 200 текстовых полей, все они называются TextBox #). Он выполняет задание ИНОГДА и делает это, отправляя инструкции в приложение Word (например, Selection.MoveDown Unit:wdLine, Count:=1
). Следовательно, для генерации даже простого письма требуется 30 секунд и блокирует офис.
Я вполне могу сделать то же самое с диапазонами и закладками и улучшенной логикой, но мое внутреннее чувство заключается в том, что это должно быть легко сделать с XML и что в будущем это будет иметь преимущества, так как эти отчеты / буквы должны быть доступны и, вероятно, прочитаны программно, много раз многими пользователями и приложениями.
Я читал об XML и схеме WordML, но чувствую, что что-то упустил.
То, что я хочу, чтобы код делал на Submit, это:
- Получение предопределенных фрагментов XML (верхний и нижний колонтитулы и т. Д.)
- Создание новых строк и объединение предопределенных строк XML
- Сохранить как XML
- Изменить значение существующих тегов в файле XML (дата, имя пользователя и т. Д.)
Я могу это сделать.
У меня есть следующие проблемы:
У меня были проблемы с нахождением схемы и пространств имен. Данные уже проверены кодом VBA, так для чего мне нужна схема?
Лучше ли создавать документ, создав одну длинную каскадную строку, содержащую XML для всего документа, принимая во внимание, что в моей модели большая часть XML будет получена из существующих фрагментов или с использованием XML Dom и создайте его программно:
20 Set oElementName = oDOM.createElement("Name")
30 oElement.appendChild oElementName
40 oElementName.Text = "This is the text of name"
- КАК СТИЛЬ ДОКУМЕНТА? (Концептуально это доставляет мне больше всего хлопот). Я не особенно хочу реверсировать его из WordML, который генерирует Word при сохранении. Я так понимаю, мне нужно сначала преобразовать его в HTML? Могу ли я создать таблицу стилей в Word, чтобы она автоматически форматировала ее?
Имеет ли это смысл? Должен ли я просто использовать диапазоны и закладки вместо этого?
XML кажется мне мощным, но это может быть искаженный случай проблемы молотка и гвоздя, то есть «я хочу изучать Хаммера, поэтому каждая проблема выглядит как гвоздь, давая мне хорошую причину для изучения Хаммера».
(Я знаю, что не должен учиться делать то, что я делаю! Но я просто беспомощный дрон, который достаточно жаловался на качество нашей системы генерации документов, что они сказали: «Заткнись и исправь это потом» О, вы не знаете VBA? Ну, мы не можем позволить себе отправить вас на курс или что-нибудь еще, поэтому учитесь по ходу дела. «Это были лучшие и худшие 2 месяца моей трудовой жизни.)
Я ценю, что вы прочитали все это, если вы это сделали, и любую помощь / совет, который вы могли бы получить!