Как получить формат файла 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
Просмотр первых нескольких байтов файла - лучший способ быстро определить тип файла, хотя он требует больше работы.