2016-11-06 4 views
0

Get (Verwenden von Windows 10 und MS Word 2016. Globale Vorlagen sind. Normal.dotx und Autoload.dotm angebaute Vorlage einige docs ist: Reference.dotx)MS Word VBA: Dokuments beigefügt Vorlage

Hallo an alle,

Ich habe Probleme in VBA bekommen die angehängte Vorlage eines Dokuments.

Ich habe eine globale Vorlage, die geladen wird, wenn ich MS Word, namens Autoload.dotm geladen. Für einige Dokumente verwenden sie jedoch eine angehängte Vorlage, bei der es sich nicht um die globale Vorlage (Autload.dotm) oder die reguläre Vorlage (Normal.dotx) handelt. Diese angehängte Vorlage heißt Reference.dotx.

Also verwende ich ActiveDocument.AttachedTemplate. Dies liefert jedoch Autoload.dotm, nicht Reference.dotx. Ich muss herausfinden, ob die angehängte Vorlage, die in Entwickler-> Dokumentvorlage-> Vorlagen-Registerkarte-> Dokumentvorlage definiert ist, Reference.dotx ist. (Denken Sie nicht, dass es einen Unterschied macht, aber das Kontrollkästchen "Dokumentstile automatisch aktualisieren" ist aktiviert.) Weiß jemand, wie ich herausfinden kann, ob ein Dokument Reference.dotx verwendet? Ich brauche keine der globalen Vorlagen, die zurückgegeben werden.

Der Code, den ich versuchen bin mit der beigefügten Vorlage zu erhalten, ist einfach:

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

Könnte es den Pfad zu ändern, das ist falsch? Sie können 'AttachedTemplate.Name und .Path' verwenden. Haben Sie 'Debug.print activedocument.tachedemplate.name' oder' .path' probiert? – Niclas

+0

Nein. Das gibt leider nur Normal.dotm zurück. Es gibt nicht einmal die globale Vorlage, die ich hinzugefügt habe.:/ –

+1

Und das ist genau das Problem (?). Es kann das Dokument reference.dotx nicht finden. – Niclas

Antwort

0

Vielleicht haben Sie das helfen? Es wird die verwendete Vorlage angezeigt.

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

Andernfalls können Sie diese verwenden, um die Vorlage

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 
Verwandte Themen