Private Sub RunFile(filespec As String)
' Opens a file in the program for which that file's extension
' is registered with Windows.
' Fails if "filespec" does not exists.
' Fails if the file type does not have an "Open" verb.
Dim fso As New Scripting.FileSystemObject
Dim sApp As New Shell32.Shell
Dim sFolder As Shell32.Folder
Dim sFile As Shell32.FolderItem
' Namespace() method of sApp, given folder name, returns a folder object.
Set sFolder = sApp.NameSpace(fso.GetParentFolderName(filespec))
' ParseName() method of the folder, given a filename,
' returns a FolderItem object.
Set sFile = sFolder.ParseName(fso.GetFileName(filespec))
' Open is commonly available, but this fails if not.
sFile.InvokeVerb "Open"
End Sub