2016-11-06 5 views
0

(Использование Windows 10 и MS Word 2016 Глобальные шаблоны являются:. Normal.dotx и Autoload.dotm Прикрепленный шаблон для некоторых Документах: Reference.dotx)MS Word VBA: Получить прилагаемый шаблон документа

Привет всем,

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

У меня есть глобальный шаблон, который загружается при загрузке MS Word под названием Autoload.dotm. Но для некоторых конкретных документов они используют прикрепленный шаблон, который не является глобальным шаблоном (Autload.dotm) или обычным шаблоном (Normal.dotx). Этот прикрепленный шаблон называется Reference.dotx.

Так что я использую ActiveDocument.AttachedTemplate. Но это возвращает Autoload.dotm, а не Reference.dotx. Мне нужно выяснить, установлен ли прикрепленный шаблон, указанный в шаблоне Developer-> Document Template-> Templates-> Document Template, Reference.dotx. (Не думайте, что это имеет значение, но установлен флажок «Автоматически обновлять стили документов».) Кто-нибудь знает, как я могу найти, использует ли документ Reference.dotx? Мне не нужен ни один из возвращенных глобальных шаблонов.

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

If (ActiveDocument.AttachedTemplate = "Reference.dotx") Then 
     PrepareDocument_enabled = True 
    End If 
+0

Может быть, тот путь, который является неправильным? Вы можете использовать 'AttachedTemplate.Name и .Path'. Вы пробовали 'Debug.print activedocument.attachedtemplate.name' или' .path'? – Niclas

+0

Nah. Это, к сожалению, просто возвращает Normal.dotm. Он даже не возвращает глобальный шаблон, который я добавил.:/ –

+1

И это точно проблема (?). Он не может найти документ reference.dotx. – Niclas

ответ

0

Может быть, это поможет? Он покажет используемый шаблон.

Sub Macro1() 
Dim strPath As String 
    strPath = Dialogs(wdDialogToolsTemplates).Template 
    MsgBox strPath 
End Sub 

В противном случае, вы можете использовать это, чтобы изменить шаблон

Sub ChangeAttachedTemplate() 
Dim oDoc As Document 
Dim oTemplate As Template 
Dim strTemplatePath As String 

Set oDoc = ActiveDocument 

If oDoc.Type = wdTypeTemplate Then Exit Sub 

Set oTemplate = oDoc.AttachedTemplate 

Debug.Print oTemplate.FullName 

' Path is probably: C:\Users\USERNAME\AppData\Roaming\Microsoft\Templates\ 
If InStr(UCase(oTemplate.FullName), UCase("Path of the template")) > 0 Then 
    oDoc.AttachedTemplate = "PATH TO TEMPLATE" & "TEMPLATE NAME.dotm" 
End If 
End Sub 
Смежные вопросы