|
Option Explicit
Declare Function GetDesktopWindow Lib "user32" () As Long Declare Function ShellExecute Lib _ "shell32.dll" Alias "ShellExecuteA" _ (ByVal hWnd As Long, ByVal lpOperation _ As String, ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Declare Function GetSystemDirectory Lib _ "kernel32" Alias "GetSystemDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize _ As Long) As Long Private Const SE_ERR_NOASSOC = 31 Public Sub ShellDoc(strFile As String) Dim lngRet As Long Dim strDir As String lngRet = ShellExecute(GetDesktopWindow, _ "open", strFile, _ vbNullString, vbNullString, vbNormalFocus) If lngRet = SE_ERR_NOASSOC Then ' no association exists strDir = Space(260) lngRet = GetSystemDirectory(strDir, _ Len(strDir)) strDir = Left(strDir, lngRet) ' show the Open with dialog box Call ShellExecute(GetDesktopWindow, _ vbNullString, "RUNDLL32.EXE", _ "shell32.dll,OpenAs_RunDLL " & _ strFile, strDir, vbNormalFocus) End If End Sub --------------------------------------------------------------------------------------------------------- |