2013-07-14 4 views
3

Я пытаюсь выяснить, является ли документ простым документом (.doc, .docx, .docm) или шаблоном (.dot, .dotx, .dotm).Как определить, является ли документ шаблоном?

Я знаю, что есть несколько способов понять это (например, расширение файла проверки), но я ищу наиболее «безопасный».

Моей текущая догадка:

Private Function isTemplate(ByVal Doc As Document) As Boolean 
    isTemplate = (Doc.FullName = Doc.AttachedTemplate.FullName) 
End Function 

Это работает, как ожидался, но я хотел бы знать, если есть более старомодный способ для достижения этой цели. Может быть, отсутствует свойство isTemplate? Не знаю.

Почему: Я создал код на шаблоне, чтобы пользователь не мог сохранить файл, если он не защищен паролем. Код работает как шарм, но он меня утомляет, когда я редактирую что-то в шаблоне, потому что у него нет пароля.

+2

в Excel вы можете использовать 'if ActiveWorkbook.FileFormat = xlTemplate'. Я бы подумал, что вы можете точно определить форматы wdTemplate в Word, но, к сожалению, я не могу найти его в объектной модели. – kmote

+1

Это умный подход. Проблема с использованием расширения заключается в том, что новые файлы не имеют расширений до момента их сохранения в первый раз. – ForEachLoop

ответ

1

Благодаря kmote, я нашел решение.

Просто зарегистрируйте свойство SaveFormat, если документ является шаблоном (here - это список возможных значений этого свойства).

Private Function isTemplate(ByVal Doc As Document) As Boolean 
    Select Case Doc.SaveFormat 
    Case wdFormatTemplate, wdFormatDocument97, _ 
     wdFormatXMLTemplate, wdFormatXMLTemplateMacroEnabled, _ 
     wdFormatFlatXMLTemplate, wdFormatFlatXMLTemplateMacroEnabled 
     isTemplate = True 
    Case Else 
     isTemplate = False 
    End Select 
End Function 
Смежные вопросы