Something like this should do it:
Code:
Option Compare Database
Option Explicit
Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCMd As Long) As Long
Declare Function apiShellExecute 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
'***App Window Constants***
Public Const WIN_NORMAL = 1 'Open Normal
Public Const WIN_MAX = 3 'Open Maximized
Public Const WIN_MIN = 2 'Open Minimized
'***Error Codes***
Private Const ERROR_SUCCESS = 32&
Private Const ERROR_NO_ASSOC = 31&
Private Const ERROR_OUT_OF_MEM = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&
Global Const SW_SHOWNORMAL = 1
Public Function fHandleFile(stFile As String, lShowHow As Long)
Dim lRet As Long, varTaskID As Variant
Dim stRet As String
'First try ShellExecute
lRet = apiShellExecute(hWndAccessApp, vbNullString, _
stFile, vbNullString, vbNullString, lShowHow)
If lRet > ERROR_SUCCESS Then
stRet = vbNullString
lRet = -1
Else
Select Case lRet
Case ERROR_NO_ASSOC:
'Try the OpenWith dialog
varTaskID = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " _
& stFile, WIN_NORMAL)
lRet = (varTaskID <> 0)
Case ERROR_OUT_OF_MEM:
stRet = "Error: Out of Memory/Resources. Couldn't Execute!"
Case ERROR_FILE_NOT_FOUND:
stRet = "Error: File not found. Couldn't Execute!"
Case ERROR_PATH_NOT_FOUND:
stRet = "Error: Path not found. Couldn't Execute!"
Case ERROR_BAD_FORMAT:
stRet = "Error: Bad File Format. Couldn't Execute!"
Case Else:
End Select
End If
fHandleFile = lRet & _
IIf(stRet = "", vbNullString, ", " & stRet)
End Function
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<ADD ABOVE TO A NEW STANDARD MODULE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
‘This goes into your existing form where you add the button and have the autonumber
Private Sub Form_Current()
Dim sPDFPath as String
sPDFPath = dLookup("PDF_Path","tblSettings") & "\" & Me.YourAutoNumber & ".PDF" 'assumes you store the network path for the files in a settings table
Me.cmdOpenPDF.Enabled = Not(Dir(sPDFPath) = "") 'Enable or disable the command button based on finding the matching pdf file
'<<<<<<<<<<<<<<<your other code for this event>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
End Sub
Private Sub cmdOpenPDF_Click()
Dim vReturn
Dim sPDFPath as String
sPDFPath = dLookup("PDF_Path","tblSettings") & "\" & Me.YourAutoNumber & ".PDF" 'assumes you store the network path for the files in a settings table
vReturn = fHandleFile(strFilePath & strFileName, WIN_NORMAL)
'or you can use the line below (no need for the new module above)
'Application.FollowHyperlink sPDFPath
End Sub
Cheers,