Как получить формат файла PowerPoint программно
-
04-10-2019 - |
Вопрос
Мне нужно определить, ActivePresentation
это формат 97-2003 или 2007 года. Я действительно не хочу проверять расширение.
Есть ли недвижимость где-то внутри модели объекта PowerPoint, которая дает эту информацию?
Решение
К сожалению нет свойства формата файлов, к сожалению. Вам придется пойти на путь расширения, как:
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
Глядя на первые несколько байтов файла - лучший способ быстро определить тип файла, хотя требуется больше работы.