There is a documented API to do this: SHOpenFolderAndSelectItems. Who knows, it might even do the right thing when explorer is not the default shell :)
VB example as requested:
Imports System
Partial Public Class NativeMethods
<System.Runtime.InteropServices.DllImportAttribute("shell32.dll", EntryPoint:="ILCreateFromPathW")> _
Public Shared Function ILCreateFromPathW(<System.Runtime.InteropServices.InAttribute(), System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPWStr)> ByVal Path As String) As System.IntPtr
End Function
<System.Runtime.InteropServices.DllImportAttribute("shell32.dll", EntryPoint:="ILFree")> _
Public Shared Sub ILFree(<System.Runtime.InteropServices.InAttribute()> ByVal pidl As System.IntPtr)
End Sub
<System.Runtime.InteropServices.DllImportAttribute("shell32.dll", EntryPoint:="ILClone")> _
Public Shared Function ILClone(<System.Runtime.InteropServices.InAttribute()> ByVal pidl As System.IntPtr) As System.IntPtr
End Function
<System.Runtime.InteropServices.DllImportAttribute("shell32.dll", EntryPoint:="ILFindLastID")> _
Public Shared Function ILFindLastID(<System.Runtime.InteropServices.InAttribute()> ByVal pidl As System.IntPtr) As System.IntPtr
End Function
<System.Runtime.InteropServices.DllImportAttribute("shell32.dll", EntryPoint:="ILRemoveLastID")> _
Public Shared Function ILRemoveLastID(<System.Runtime.InteropServices.InAttribute()> ByVal pidl As System.IntPtr) As System.Int32
End Function
<System.Runtime.InteropServices.DllImportAttribute("shell32.dll", EntryPoint:="SHOpenFolderAndSelectItems")> _
Public Shared Function SHOpenFolderAndSelectItems(<System.Runtime.InteropServices.InAttribute()> ByVal pidl As System.IntPtr, ByVal cidl As System.Int32, <System.Runtime.InteropServices.InAttribute()> ByRef child As System.IntPtr, ByVal Flags As System.Int32) As System.Int32
End Function
End Class
Module Program
Sub Main()
Dim pidl, clone, child As System.IntPtr
pidl = NativeMethods.ILCreateFromPathW("c:\windows\explorer.exe")
If pidl <> System.IntPtr.Zero Then
clone = NativeMethods.ILClone(pidl)
child = NativeMethods.ILFindLastID(clone)
NativeMethods.ILRemoveLastID(pidl)
NativeMethods.SHOpenFolderAndSelectItems(pidl, 1, child, 0)
NativeMethods.ILFree(clone)
NativeMethods.ILFree(pidl)
End If
End Sub
End Module