Как получить формат файла PowerPoint программно

Мне нужно определить, является ли ActivePresentation формат 97-2003 или 2007 Я действительно не хочу проверять расширение.

Есть ли где-то свойство внутри объектной модели PowerPoint, которая дает эту информацию?

2 ответа

Решение

К сожалению, свойство File Format отсутствует. Вам придется пройти путь расширения, например:

Sub APFileFormat()
Dim ap As Presentation
Set ap = ActivePresentation
Length = Len(ap.Name)
Match = InStrRev(StringCheck:=ap.Name, StringMatch:=".")
ExtentionLength = Length - Match
    Select Case ExtentionLength
        Case 4
            FileFormat = "PowerPoint 2007-2010"
        Case 3
            FileFormat = "PowerPoint 97-2003"
        Case Else
            FileFormat = "undetermined"
    End Select
Debug.Print "The file format of the active presentation is " & FileFormat
End Sub

Когда презентация открыта, формат файла отсутствует, все в памяти. Однако файл, из которого он получен, может быть в более старом двоичном формате или в более новом формате OpenXML. Самый простой способ определить разницу - посмотреть на первые несколько байтов файла.

Для двоичных форматов это составной файл OLE, который всегда начинается с байтов: 0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1.

Для более новых форматов это ZIP-файл, который всегда начинается с байтов: 0x50, 0x4B, 0x03, 0x04

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

Другие вопросы по тегам