Как получить формат файла PowerPoint программно - PullRequest
2 голосов
/ 26 мая 2010

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

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

Ответы [ 2 ]

3 голосов
/ 04 июня 2010

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

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

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

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

0 голосов
/ 27 мая 2010

К сожалению, свойство 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
...