'Attribute VB_Name = "modNativeApp"
'Option Compare Database
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As String, ByVal lpszFile As String, ByVal lpszParams As String, ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Const SW_SHOWNORMAL = 1
Const SE_ERR_FNF = 2&
Const SE_ERR_PNF = 3&
Const SE_ERR_ACCESSDENIED = 5&
Const SE_ERR_OOM = 8&
Const SE_ERR_DLLNOTFOUND = 32&
Const SE_ERR_SHARE = 26&
Const SE_ERR_ASSOCINCOMPLETE = 27&
Const SE_ERR_DDETIMEOUT = 28&
Const SE_ERR_DDEFAIL = 29&
Const SE_ERR_DDEBUSY = 30&
Const SE_ERR_NOASSOC = 31&
Const ERROR_BAD_FORMAT = 11&
Public Sub OpenNativeApp(ByVal psDocName As String)
Dim r As Long, msg As String
r = StartDoc(psDocName)
If r <= 32 Then
'There was an error
Select Case r
Case SE_ERR_FNF
msg = "File not found"
Case SE_ERR_PNF
msg = "Path not found"
Case SE_ERR_ACCESSDENIED
msg = "Access denied"
Case SE_ERR_OOM
msg = "Out of memory"
Case SE_ERR_DLLNOTFOUND
msg = "DLL not found"
Case SE_ERR_SHARE
msg = "A sharing violation occurred"
Case SE_ERR_ASSOCINCOMPLETE
msg = "Incomplete or invalid file association"
Case SE_ERR_DDETIMEOUT
msg = "DDE Time out"
Case SE_ERR_DDEFAIL
msg = "DDE transaction failed"
Case SE_ERR_DDEBUSY
msg = "DDE busy"
Case SE_ERR_NOASSOC
msg = "No association for file extension"
Case ERROR_BAD_FORMAT
msg = "Invalid EXE file or error in EXE image"
Case Else
msg = "Unknown error"
End Select
' MsgBox msg
End If
End Sub
Private Function StartDoc(psDocName As String) As Long
Dim Scr_hDC As Long
Scr_hDC = GetDesktopWindow()
StartDoc = ShellExecute(Scr_hDC, "Open", psDocName, "", "C:\", SW_SHOWNORMAL)
End Function
sub btnOpenFile_click()
OpenNativeApp ME.txtBox
end sub
that code is 1,000 lines longer than what is necessaryPaste this code into a module, and it will open ANY file in its native application. File folders too.
In a form put the field and a button to open it.
Hi. Have you tried?Please let me know how to open subfolder from access form. I am able to open MyDocument but not able to open MyDocument /Cases/2020
Thanks for your help
i don't know about you guy, but I've also had issues with this not working.Application.FollowHyperlink "...\MyDocuments\Cases\2020"
If that's the case, maybe try GoHyperlink.i don't know about you guy, but I've also had issues with this not working.
Hi. Just checking, does the folder you're trying to open exist? What do you get with this code?Thank you everyone for your replies. Still I am not able to open the subfolders.
Here is my code I tried.
Shell "explorer.exe /" & """ & txtLink & """"", vbNormalFocus
The text box txtLink has the path (C:\Users\Joel\MyDocuments\Cases\2020). It opens only the MyDocument folder.
Thanks again for all your help.
Thank you, I tried, it says arguments not optional..Hi. Have you tried?
Application.FollowHyperlink "...\MyDocuments\Cases\2020"
Hi. If the message box is blank, it might mean the folder doesn't exist. Can you confirm that? You can't open a folder until it's created.Thank you for the reply. The message box was blank. No message.
gsrajan,Thank you, I tried, it says arguments not optional..
Application.FollowHyperlink ("...\MyDocuments\Cases\2020")
Application.FollowHyperlink "...\MyDocuments\Cases\2020"
Thank you for your reply. I checked, the folder is there.Hi. If the message box is blank, it might mean the folder doesn't exist. Can you confirm that? You can't open a folder until it's created.
Hi. Glad to hear you got it sorted now. Good luck with your project.Thank you for your reply. I checked, the folder is there.
Application.FollowHyperlink txtLink - it works for me now. Thanks so much for your reply.