Welcome to the forum!

As part of my response I must point out a few problems with your post to help you with future posts. These rules apply to most all forums.
1. Do not quote too much. That is why we have a thread.
2. Do not hyjack another thread, start your own.
3. If another's thread pertains to what you need, start you own and then post the link to the one that relates.
4. Do not post to a very old thread, see rule (3).

Here is a partial solution. This solution uses the Window's associated programs for a file type. For PDF, you may not get the adobe reader or acobat. For mine, I get PrimoPDF.

The more complete solutions would probably look at registry entries. Try starting a new thread if you have any questions or want to pursue the registry method.

Put this in a Module with the test Sub in that module or another or the event code as you like.

[vba]Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" _
(ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long

Const MAX_FILENAME_LEN = 260
Private Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, ByVal lpResult As String) As Long

Sub test_EXEPath()
MsgBox ExePath("c:\myfiles\wp\t.PDF"), vbInformation, "Path to EXE Program"
End Sub

Public Function ExePath(lpFile As String) As String
Dim s2 As String, i As Long

'Check if the file exists
If Dir(lpFile) = "" Or lpFile = "" Then
ExePath = ""
Exit Function
End If

'Create a buffer
s2 = String(MAX_FILENAME_LEN, 32)

'Retrieve the name and handle of the executable, associated with this file
i = FindExecutable(lpFile, vbNullString, s2)
If i > 32 Then
ExePath = Left$(s2, InStr(s2, Chr$(0)) - 1)
Else
ExePath = ""
End If
End Function
[/vba]