2.5.277 VirtualPath

VirtualPath is a XLUnicodeString that specifies a path, a workbook, and optionally a sheet.

MUST be a string in the following grammar:

 virt-path = volume / unc-volume / rel-volume / transfer-protocol / startup / alt-startup / library / simple-file-path / ole-link
 ole-link = path-string %x0003 path-string
 simple-file-path = [%x0001] file-path
 startup = %x0001 %x0006 file-path

This code specifies that the relative-path is relative to the startup directory.

 alt-startup = %x0001 %x0007 file-path

This code specifies that the relative-path is relative to the alternate startup directory.

 library = %x0001 %x0008 file-path

This code specifies that the relative-path is relative to the library directory.

 transfer-protocol = %x0001 %x0005 count transfer-path

This code specifies that the path is a transfer protocol path. The value of count MUST be equal to the number of characters following count in transfer-path.

 transfer-path = transfer-base-path / "[" transfer-base-path "]" sheet-name
 transfer-base-path = transfer-type "://" file-path
 transfer-type = "ftp" / "http" / "https"
 rel-volume = %x0001 %x0002 file-path

This code specifies that the path is relative to the drive volume of the workbook that contains the path.

 volume = %x0001 %x0001 volume-character file-path

This code specifies that the path is relative to a specific drive volume. The drive volume is specified in volume-character.

 unc-volume = %x0001 %x0001 %x0040 unc-path

This code specifies that the path is relative to a UNC volume. The computer name is specified in computer-name and the shared folder is specified in shared-folder.

 unc-path = unc-base-path / "[" unc-base-path "]" sheet-name
 unc-base-path = computer-name %x0003 shared-folder %x0003 relative-path
 volume-character = %x0041-%x005A / %x0061-%x007A

This code specifies a drive volume.

 file-path = relative-path / "[" relative-path "]" sheet-name
 sheet-name = sheet-start-end-character *sheet-character sheet-start-end-character / sheet-start-end-character

This code specifies the name of the sheet within the workbook.

 sheet-start-end-character = %x0001-%xFFFF

This code specifies a character which is a first or last character of sheet name. Such character MUST NOT include any character that matches invalid-sheet-start-end-character.

 invalid-sheet-start-end-character = %x0003 /  "*"  / "?" / "’" / "["  /  "]"  /  "\"  /  ":"  /  "/"
 sheet-character = %x0001-%xFFFF

This code specifies a sheet character. A sheet character MUST NOT include any character that matches invalid-sheet-character.

 invalid-sheet-character = %x0003 /  "*"  / "?" / / "["  /  "]"  /  "\"  /  ":"  /  "/"
 relative-path = directory *(%x0003 directory)

This code specifies a sequence of subdirectories that comprise the path from the volume or directory.

 directory = path-string

This code specifies a directory.

 computer-name = path-string

This code specifies a computer name.

 shared-folder = path-string

This code specifies a shared folder.

 path-string = 1*path-character
 path-character = %x0020-%x0021 / %x0023-%x0029 / %x002B-%x002E / %x0030-%x0039 / %x003B / %x003D / %x0040-%x005B / %x005D-%x007B / %x007D-%xFFFF

This code specifies a path character.

count = %x00-%xFF