Voici un code, permettant d'utiliser la fonction API ShellExecute, pour ouvrir un dossier (dans explorateur windows) , ou un fichier dans l'application associée (le bloc note pour un .txt, Word pour un .doc...) .. et tout cela en gérant l'erreur sur la non disponibilité du fichier .. (inexistant, pas d'association.....)

Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
Public Function ShellEx(ByVal sFile As String, _
        Optional ByVal eShowCmd As EShellShowConstants = zouSW_SHOWDEFAULT, _
        Optional ByVal sParameters As String = "", _
        Optional ByVal sDefaultDir As String = "", _
        Optional sOperation As String = "open", _
        Optional Owner As Long = 0 _
    ) As Boolean
Dim lR As Long
Dim lErr As Long, sErr As String
    If (InStr(UCase$(sFile), ".EXE") <> 0) Then
        eShowCmd = 0
    End If
    On Error Resume Next
    If (sParameters = "") And (sDefaultDir = "") Then
        lR = ShellExecuteForExplore(Owner, sOperation, sFile, 0, 0, zouSW_SHOWNORMAL)
    Else
        lR = ShellExecute(Owner, sOperation, sFile, sParameters, sDefaultDir, eShowCmd)
    End If
    'MsgBox lR
    If (lR < 0) Or (lR > 32) Then
        ShellEx = True
    Else
        lErr = vbObjectError + 1048 + lR
        Select Case lR
        Case 0
            lErr = 7: sErr = "Dépassement de mémoire"
        Case ERROR_FILE_NOT_FOUND
            lErr = 53: sErr = "Fichier non trouvé"
        Case ERROR_PATH_NOT_FOUND
            lErr = 76: sErr = "Chemin inconnu"
        Case ERROR_BAD_FORMAT
            sErr = "L'exécutable n'est pas valide ou est corrompu"
        Case SE_ERR_ACCESSDENIED
            lErr = 75: sErr = "Erreur/ accès au répertoire ou au fichier"
        Case SE_ERR_ASSOCINCOMPLETE
            sErr = "Ce type de fichier est sans association valable"
        Case SE_ERR_DDEBUSY
            lErr = 285: sErr = "Le fichier n'a pu être ouvert car en cours d'utilisation. Recommencez plus tard SVP."
        Case SE_ERR_DDEFAIL
            lErr = 285: sErr = "Le fichier n'a pu être ouvert car la transaction DDE a failli.  Recommencez plus tard SVP."
        Case SE_ERR_DDETIMEOUT
            lErr = 286: sErr = "Le fichier n'a pu être ouvert (délai max dépassé).  Recommencez plus tard SVP."
        Case SE_ERR_DLLNOTFOUND
            lErr = 48: sErr = "Impossible de trouver la DLL spécifiée."
        Case SE_ERR_FNF
            lErr = 53: sErr = "Fichier non trouvé"
        Case SE_ERR_NOASSOC
            sErr = "Aucune association définie pour ce type de fichier"
        Case SE_ERR_OOM
            lErr = 7: sErr = "Mémoire épuisée"
        Case SE_ERR_PNF
            lErr = 76: sErr = "Chemin inconnu"
        Case SE_ERR_SHARE
            lErr = 75: sErr = "Violation de partage !."
        Case Else
            sErr = "Une erreur a surgi au moment d'essayer d'ouvrir ou d'éditer le fichier choisi."
        End Select
 
        MsgBox "Error n°" & CStr(lErr) & Chr(13) & sErr & " sur ouverture  : " & Chr(13) & sFile, vbCritical
        ShellEx = False
    End If
End Function


A télécharger : ShellExecute : Ouverture d'un fichier/dossier

'Mes' autres sources