Things that come from outside a slide’s own shapes are listed once, and shapes refer to them by number.
The external object list
The document’s ExternalObjectList (type 0x0409) has an ExternalObjectListAtom and one container for each object.
| Container | Type | Is |
|---|---|---|
| ExternalOleEmbed | 0x0FCC | An embedded OLE object. |
| ExternalOleLink | 0x0FCE | A linked OLE object. |
| ExternalOleControl | 0x0FEE | An ActiveX control. |
| ExternalHyperlink | 0x0FD7 | A hyperlink. |
| ExternalVideo | 0x1005 | A video, as an AVI or MCI movie. |
| ExternalWavAudioEmbedded | 0x100F | An embedded sound. |
A shape refers to an object with an ExternalObjectRefAtom (0x0BC1) in its client data. An OLE object’s data is a separate top-level record, an ExternalOleObjectStg (0x1011), reached through the persist directory.
Embedded storages
An ExternalOleObjectStg (type 0x1011) holds a compound file, either stored whole (recInstance 0) or compressed (recInstance 1). When compressed, its body is a 32-bit decompressed size and a zlib stream.
Sounds
The document’s SoundCollection (type 0x07E4) holds Sound containers (type 0x07E6), each with the sound’s name, extension and identifier, and a SoundDataBlob (type 0x07E7) with its bytes.
VBA macros
The document’s List record (type 0x07D0) may hold a VbaInfo container (0x03FF) whose VbaInfoAtom (0x0400) gives:
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 8 | 4 | persistIdRef | Persist id of the macro project’s storage, a VbaProjectStg record. |
| 12 | 4 | fHasMacros | 1 when the project holds macros. |
| 16 | 4 | version | 2. |
The project is a storage in a record like the embedded objects above (type 0x1011). This site lists that it is there. Macros are never run or unpacked.
Comments
A slide’s comments are held in a binary programmatic tag named
___PPT10(ProgBinaryTag, 0x138A). Its BinaryTagDataBlob (0x138B) holds a Comment10 container (0x2EE0) for each comment.