Word VBA Макросы: Определить формат файла

Автор Anton, 10 апреля 2017, 12:50

Anton

Добрый день!
У меня есть непростой вопрос: можно ли определить тип открытого файла Word? Т.е. узнать, открытый файл существует в формате doc или docx?

Администратор

Вот так можно узнать формат активного файла (это файл, который отображается на мониторе):
Sub Макрос()
    ' Вывод результата в View - Immediate Window.
    Debug.Print ActiveDocument.SaveFormat
End Sub

Возвращается число из набора констант "WdSaveFormat": https://msdn.microsoft.com/en-us/library/bb238158(v=office.12).aspx


Кроме того, можно узнать расширение файла. Но нужно помнить, что юзер может вручную изменить расширение, поэтому по расширению нельзя на 100% узнать формат файла:

Sub Макрос2()

    Dim str As String
   
    '1. Копирование имени файла в переменную.
    str = ActiveDocument.Name
    '2. Извлечение расширения.
    str = Mid(str, InStrRev(str, ".") + 1)
    '3. Отображение расширение в View - Immediate Window.
    Debug.Print str

End Sub

Anton


Anton

Помогите пожалуйста определить формат прикрепленного файла.

По методике выше определяет, что это 12 - XML document format. Я никак не пойму, в чем отличие от docx и вообще что это за формат (какое должно быть расширение)?



[вложение удалено администратором]

Администратор

12 - XML document format - это расширение "docx".

Anton

Тогда почему вверху Word пишет "Режим ограниченной функциональности"? У меня Word 2010.
В других документах docx не пишет.

Началось все с того, что некоторые макросы перестали работать.
Я стал разбираться - действительно, если пересохранить в Word 2010, то макрос снова заработал. Пересохранял я так: Файл - Сохранить как - выбрал первый формат. Тоже сохранилось в docx, но надпись "Режим ограниченной функциональности" пропала.

Администратор

С этим файлом что-то не так. Я использовал VBA, чтобы понять, что это за файл, VBA сказал, что файл относится к версии 2003. Но в версии 2003 не было расширения "docx". Может быть в ворде 2003 использовался конвертер, позволяющий работать с docx-файлами. Проверить это нет возможности (и желания).

А вообще такая надпись может появляться, если с файлом работают в разных версиях ворда.
Например, в ворде 2016 такая надпись появляется, если открыть файл, с которым работали в ворде 2010.
Т.к. в ворде 2016 есть новое, чего нет в ворде 2010.