3.1.6 PROJECT Stream Example
This example illustrates the properties of the VBA project in the Project Stream.
Offset |
Size |
Structure |
Value |
---|---|---|---|
00000000 |
027F |
array of bytes - text |
ID="{917DED54-440B-4FD1-A5C1-74ACF261E600}"\r\nDocument=ThisWorkbook/&H00000000\r\nDocument=Sheet1/&H00000000\r\nPackage={AC9F2F90-E877-11CE-9F68-00AA00574A4F}\r\nBaseClass=UserForm1\r\nHelpFile="c:\example path\example.hlp"\r\nName="VBAProject"\r\nHelpContextID="1"\r\nDescription="Example VBA Project Description"\r\nVersionCompatible32="393222000"\r\nCMG="0705D8E3D8EDDBF1DBF1DBF1DBF1"\r\nDPB="0E0CD1ECDFF4E7F5E7F5E7"\r\nGC="1517CAF1D6F9D7F9D706"\r\n\r\n[Host Extender Info]\r\n&H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000\r\n\r\n[Workspace]\r\nThisWorkbook=23, 23, 911, 280, \r\nSheet1=69, 69, 724, 317, C\r\nUserForm1=0, 0, 0, 0, C, 46, 46, 701, 294, Z |
Figure 12: Project stream
The preceding table illustrates an array of bytes that contains the example VBAPROJECTText (section 2.3.1). The VBAPROJECTText (section 2.3.1) conforms to the ABNF syntax.
text: The example VBAPROJECTText (section 2.3.1) follows. The following text is formatted for readability:
-
ID="{917DED54-440B-4FD1-A5C1-74ACF261E600}" Document=ThisWorkbook/&H00000000 Document=Sheet1/&H00000000 Package={AC9F2F90-E877-11CE-9F68-00AA00574A4F} BaseClass=UserForm1 HelpFile="c:\example path\example.hlp" Name="VBAProject" HelpContextID="1" Description="Example VBA Project Description" VersionCompatible32="393222000" CMG="0705D8E3D8EDDBF1DBF1DBF1DBF1" DPB="0E0CD1ECDFF4E7F5E7F5E7" GC="1517CAF1D6F9D7F9D706" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] ThisWorkbook=23, 23, 911, 280, Sheet1=69, 69, 724, 317, C UserForm1=0, 0, 0, 0, C, 46, 46, 701, 294, Z
ProjectID (section 2.3.1.2): "ID="{917DED54-440B-4FD1-A5C1-74ACF261E600}"" specifies the CLSID of the VBA project’s Automation type library.
ProjectDocModule (section 2.3.1.4): specifies the module names, "ThisWorkbook" and "Sheet1", of the document modules in the VBA project. "&H00000000" specifies the modules are document modules. This example contains no ProjectStdModule (section 2.3.1.5) or ProjectClassModule (section 2.3.1.6) properties as there are no procedural modules or class modules.
ProjectPackage (section 2.3.1.8): "Package={AC9F2F90-E877-11CE-9F68-00AA00574A4F}" specifies the CLSID for the designer module, "UserForm1", as specified in the ProjectDesignerModule (section 2.3.1.7) property.
ProjectHelpFile (section 2.3.1.9): "HelpFile="c:\example path\example.hlp"" is equivalent to the value specified in PROJECTHELPFILEPATH (section 2.3.4.2.1.8) field in the PROJECTINFORMATION record (section 2.3.4.2.1).
ProjectName (section 2.3.1.11): "Name="VBAProject"" is equivalent to the value specified in PROJECTNAME (section 2.3.4.2.1.6).
ProjectHelpId (section 2.3.1.12): "HelpContextID="1"" is equivalent to the value specified in PROJECTHELPCONTEXT (section 2.3.4.2.1.9).
ProjectDescription (section 2.3.1.13): "Description="Example VBA Project Description"" is equivalent to the DocStringRecord (section 2.3.4.2.1.7) field in the PROJECTINFORMATION record (section 2.3.4.2.1).
ProjectVersionCompat2.3.1.14 (section 2.3.1.14): "VersionCompatible32="393222000"" specifies the VBA version of the VBA project.
ProjectProtectionState (section 2.3.1.15): "CMG="0705D8E3D8EDDBF1DBF1DBF1DBF1"" specifies no sources are restricted access to the VBA project. The value is obfuscated by Data Encryption (section 2.4.3). The following is the decrypted value of the ProjectProtectionState (section 2.3.1.15) as specified by an Encrypted Data Structure (section 2.4.3.1). The text is formatted for readability:
-
Seed: 0x07 Version: 0x02 ProjKey: 0xDF Ignored: 0x070707 DataLength: 0x00000004 Data: 0x00000000
ProjectPassword (section 2.3.1.16): "DPB="0E0CD1ECDFF4E7F5E7F5E7"" specifies the VBA project has no password. The value is obfuscated by Data Encryption (section 2.4.3). The following is the decrypted value of the ProjectProtectionState (section 2.3.1.15) as specified by an Encrypted Data Structure (section 2.4.3.1). The text is formatted for readability:
-
Seed: 0x0E Version: 0x02 ProjKey: 0xDF Ignored: 0x070707 DataLength: 0x00000001 Data: 0x00
ProjectVisibilityState (section 2.3.1.17): "GC="1517CAF1D6F9D7F9D706"" specifies the VBA project is visible. The value is obfuscated by Data Encryption (section 2.4.3). The following text is the decrypted value of ProjectVisibilityState (section 2.3.1.17) as specified by an Encrypted Data Structure (section 2.4.3.1). The text is formatted for readability:
-
Seed: 0x15 Version: 0x02 ProjKey: 0xDF Ignored: 0x0707 DataLength: 0x00000001 Data: 0xFF
HostExtenderRef (section 2.3.1.18): "&H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000", specifies the list of host extenders. There is only one host extender for the VBA project.
ExtenderIndex: "&H00000001" specifies the host extender entry is "1".
ExtenderGuid: "{3832D640-CF90-11CF-8E43-00A0C911005A}" specifies the GUID of the Automation type library to extend.
LibName: "VBE" specifies a built in name for the VBA Automation type library.
CreationFlags: "&H00000000" specifies that a new extended type library for the aggregatable server cannot be created if there is one available.
ProjectWorkspace record (section 2.3.1.19) specifies module window states for the three modules in the VBA project.
The first ProjectWorkspace record (section 2.3.1.19) specifies the module window state for the "ThisWorkbook" module. The ModuleIdentifier value, "ThisWorkbook" specifies the name of the module. The first CodeWindow value, "23, 23, 911, 280", specifies the coordinates of the window as follows:
WindowLeft 23
WindowTop 23
WindowRight 911
WindowBottom 280
There is no value for WindowState for this module.
The second ProjectWorkspace record (section 2.3.1.19) specifies the module window state for the "Sheet1" module. ModuleIdentifier "Sheet1" specifies the name of the module. The CodeWindow Value, "69, 69, 724, 317" specifies the coordinates of the window as follows:
WindowLeft = 69
WindowTop = 69
WindowRight = 724
WindowBottom = 317
The WindowState, "C" specifies the code window for this module is closed.
The third ProjectWorkspace record (section 2.3.1.19) specifies the module windows state for the "UserForm1" designer module. ModuleIdentifier "UserForm1" specifies the name of the module. The CodeWindow value, "0, 0, 0, 0", specifies no code window coordinates for this ProjectWorkspace record (section 2.3.1.19). The WindowState, "C", specifies the code window for this module is closed. The DesignerWindow value, "46, 46, 701, 294", specifies the coordinates of the window as follows:
WindowLeft = 46
WindowTop = 46
WindowRight = 701
WindowBottom = 294
WindowState: "Z" specifies the DesignerWindow is zoomed to fill the available viewing area.