Стили файлов MS Word автоматически обновляются вместе с внешним документом

260
Patix80

В MS Word у нас есть шаблон документа ( template1.docm ). Этот документ используется в SharePoint многими пользователями для написания тысяч документов процедур, сохраненных как документы .mht.

Поскольку мы обновляем стили в шаблоне, мы хотели бы обновить все эти другие документы, созданные из него.

Можно ли обновить стили только в этом одном файле шаблона и автоматически обновить все эти другие файлы?

Если нет, что еще я могу сделать, чтобы обновить эти тысячи документов с изменениями в файле шаблона?

0

1 ответ на вопрос

0
harrymc

Я попытаюсь обрисовать подход к проблеме с использованием макроса VBA, предупреждая, что он является полностью теоретическим и непроверенным.

Идея состоит в том, чтобы создать рабочий документ, содержащий макрос VBA, который выполняет повторное присоединение шаблона ко всем документам в папке после запроса папки.

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

Вот макрос:

Sub UpdateDocuments() Dim strFolder As String, strFile As String, strCurDoc As Document, strTemplate As String strFolder = GetFolder strTemplate = "C:\path to template\template.dot" If strFolder = "" Then Exit Sub Application.ScreenUpdating = False strFile = Dir(strFolder & "\*.docx", vbNormal) While strFile <> "" Set strCurDoc = Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False) strCurDoc.AttachedTemplate = strTemplate strCurDoc.Close wdSaveChanges End With strFile = Dir() Wend Set wdDoc = Nothing Application.ScreenUpdating = True End Sub  Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function 
Не так хорошо, как я думал, но ... Проблема решается одной строкой: `ActiveDocument.CopyStylesFromTemplate (" C: \ Temp \ FullPathToTemplate.dotx ")`. Я использую шаблон с новыми стилями и копирую их с помощью макроса в другой документ. Patix80 5 лет назад 0
Используете ли вы решение, подобное приведенному выше, или намерены добавить новый макрос в тысячи документов? harrymc 5 лет назад 0
Фактически, файл макрокодов включен во многие другие. Таким образом, этот код легко добавить только в файл кода. Мы должны, однако, отредактировать ленту, чтобы добавить новую кнопку макроса ... Я не смог пока использовать ваше решение, но я оставлю его для следующего шага! Спасибо Patix80 5 лет назад 0

Похожие вопросы