2016-11-06 12 views
0

を取得(2016年グローバルテンプレートがあるのWindows 10やMS Wordを使用:。Normal.dotxとAutoload.dotmいくつかのドキュメントに添付されているテンプレートは次のとおりです。Reference.dotx)MS WordのVBA:文書の添付されたテンプレート

みなさん、こんにちは、

ドキュメントの添付テンプレートを取得する際にVBAに問題があります。

私は、Autoload.dotmというMS Wordを読み込むと読み込まれるグローバルテンプレートを持っています。しかし、いくつかの特定のドキュメントでは、グローバルテンプレート(Autoad.dotm)または標準テンプレート(Normal.dotx)ではない添付テンプレートを使用します。この添付テンプレートはReference.dotxと呼ばれます。

私はActiveDocument.AttachedTemplateを使用します。しかし、これはReference.dotxではなくAutoload.dotmを返します。開発者 - >ドキュメントテンプレート - >テンプレート - >ドキュメントテンプレートで定義されている添付テンプレートが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 
関連する問題