2013-07-30 4 views
0

Je crée un modèle de document pour un rapport que mon personnel doit utiliser et j'ai un bouton de commande en bas qui supprimera tous les boutons de commande du rapport et protégera comme en lecture seulement pour fermer le rapport.macro pour retourner le format de document actif pour l'instruction IF/Then

Je ne veux pas que quelqu'un apporte accidentellement ces modifications au modèle s'il les ouvre au lieu d'un nouveau document basé dessus.

Donc je voudrais une chaîne de code qui vérifie le document actif, si c'est .dotm je veux qu'il affiche une boîte de message et quitte. si c'est un .docx, je veux qu'il continue avec le reste du code que j'ai écrit.

J'ai été incapable de retourner le format ou l'utiliser dans une instruction IF/THEN. J'ai été incapable de trouver quelque chose sur le net à ce sujet non plus. Est-ce impossible? ou devrais-je vérifier l'extension de fichier? Si oui, comment l'utiliserais-je comme valeur dans une déclaration IF/THEN?

Répondre

0

Le document peut avoir été basé sur le modèle, mais pas encore enregistré. Dans ce cas, il serait appelé "Document1", etc., sans point.

If InStr(ActiveDocument.Name,".") = 0 Then 
    'it is a new document, based on a template 
ElseIf InStr(ActiveDocument.Name,".dotm") > 0 Then 
    'it is a/the template 

Ceci suppose bien entendu que le ActiveDocument est le bon. Si elles cliquent sur un bouton dans le document, cela est correct, mais si elles utilisent la boîte de dialogue Macros, vous souhaiterez peut-être inclure des vérifications supplémentaires.

J'utiliser ce qui suit, qui ne tient pas compte des différences dans le cas (.dotm, .dotm):

If InStr(UCase(ActiveDocument.Name), ".DOTM") > 0 Then 
    'it is a template.. 
Else 
    'it's just a document 
End If 

Vérification ActiveDocument.AttachedTemplate.Name peut également être utile, pour confirmer si le document actif est l'un basé sur votre modèle .

Questions connexes