begin process at 2012 05 24 17:01:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > OUVERTURE D'UN FICHIER PAR UN LOGICIEL EXTERNE

OUVERTURE D'UN FICHIER PAR UN LOGICIEL EXTERNE


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Classé sous :fichier, shell, ouvrir, lancer, findexecutable Niveau :Initié Date de création :27/09/2006 Date de mise à jour :09/10/2006 16:01:05 Vu :40 322

Auteur : casy

Ecrire un message privé
Commentaire sur cette source (34)
Ajouter un commentaire et/ou une note

 Description

Ce code permet d'ouvrir un fichier quelconque dans le logiciel associé à ce type de fichier.

Il suffit de passer en argument le nom du fichier (avec chemin complet).
La fonction vérifie l'existence du fichier, recherche le logiciel associé au type de fichier et ouvre le fichier dans ce logiciel.

Un argument optionnel permet de suspendre le process tant que le logiciel externe n'a pas été fermé.

CADEAU : Code librement réutilisable :)

PS : Ce code a été développé au départ pour ouvrir des pdf (suivant les versions d'acrobat reader, il n'était pas installé au même endroit). Finalement, il s'est révélé générique.

Source

  • Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  • Public Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, _
  • ByVal lpDirectory As String, _
  • ByVal lpResult As String) As Long
  • Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
  • ByVal bInheritHandle As Long, _
  • ByVal dwProcessId As Long) As Long
  • Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
  • ByVal dwMilliseconds As Long) As Long
  • Public Const INFINITE = &HFFFFFFFF ' Infinite timeout
  • Public Const SYNCHRONIZE = &H100000
  • '---------------------------------------------------------------------------------------
  • ' Procedure : OuvrirFichier
  • ' DateTime : 27/09/2006 18:20
  • ' Author : Casy
  • ' Purpose : Permet d'ouvrir un document avec l'applicatif (.exe) par défaut.
  • ' Vérifie d'abord si le fichier existe, si un applicatif est installé
  • ' Possibilité de bloquer le process tant que l'applicatif n'est pas fermé
  • ' Retourne TRUE si l'ouverture s'est bien passée, FALSE sinon.
  • '---------------------------------------------------------------------------------------
  • Public Function OuvrirFichier(fichier As String, Optional attenteFermeture As Boolean = False) As Boolean
  • Dim fileappli As String * 250
  • Dim result As Integer
  • Dim temp As String
  • Dim fichAOuvrir As String
  • Dim i As Integer
  • Dim pid As Double
  • Dim phnd As Long
  • On Error GoTo OuvrirFichier_Error
  • temp = Dir$(fichier) 'recherche si le fichier existe
  • If temp <> "" Then
  • ' Le fichier existe
  • ' Recherche l'exécutable associé
  • result = FindExecutable(fichier, vbNullString, fileappli)
  • If result > 32 Then
  • ' Association trouvée
  • i = InStr(1, fileappli, Chr(0), vbBinaryCompare) - 1
  • fichAOuvrir = """" & Left$(fileappli, i) & """ " & fichier
  • Else
  • ' Aucune association de trouvée
  • OuvrirFichier = False
  • Exit Function
  • End If
  • Else
  • ' Le fichier n'existe pas
  • OuvrirFichier = False
  • Exit Function
  • End If
  • ' Ouverture du fichier
  • pid = Shell(fichAOuvrir, vbMaximizedFocus)
  • If pid <> 0 Then
  • ' Si attente fermeture demandé, on suspend le process jusqu'à que le logiciel soit fermé.
  • If attenteFermeture = True Then
  • phnd = OpenProcess(SYNCHRONIZE, 0, pid)
  • If phnd <> 0 Then
  • Call WaitForSingleObject(phnd, INFINITE)
  • Call CloseHandle(phnd)
  • End If
  • End If
  • OuvrirFichier = True
  • Else
  • OuvrirFichier = False
  • End If
  • On Error GoTo 0
  • Exit Function
  • OuvrirFichier_Error:
  • OuvrirFichier = False
  • '---- Code à personaliser en cas d'erreur -------------------------------------------------
  • Dim message As String
  • message = "Erreur " & Err.Number & " (" & Err.Description & ") dans la procedure OuvrirFichier" & vbCrLf & vbCrLf
  • message = message & "Vérifier que le fichier est accessible !" & vbCrLf
  • message = message & "Vérifier que le logiciel associé est un exécutable !"
  • MsgBox message, vbCritical Or vbOKOnly, "ERREUR - OuvrirFichier"
  • '------------------------------------------------------------------------------------------
  • End Function
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, _
                                                                                  ByVal lpDirectory As String, _
                                                                                  ByVal lpResult As String) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
                                                    ByVal bInheritHandle As Long, _
                                                    ByVal dwProcessId As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
                                                            ByVal dwMilliseconds As Long) As Long

Public Const INFINITE = &HFFFFFFFF       '  Infinite timeout
Public Const SYNCHRONIZE = &H100000

'---------------------------------------------------------------------------------------
' Procedure : OuvrirFichier
' DateTime  : 27/09/2006 18:20
' Author    : Casy
' Purpose   : Permet d'ouvrir un document avec l'applicatif (.exe) par défaut.
'             Vérifie d'abord si le fichier existe, si un applicatif est installé
'             Possibilité de bloquer le process tant que l'applicatif n'est pas fermé
'             Retourne TRUE si l'ouverture s'est bien passée, FALSE sinon.
'---------------------------------------------------------------------------------------
Public Function OuvrirFichier(fichier As String, Optional attenteFermeture As Boolean = False) As Boolean
Dim fileappli As String * 250
Dim result As Integer
Dim temp As String
Dim fichAOuvrir As String
Dim i As Integer
Dim pid As Double
Dim phnd As Long

On Error GoTo OuvrirFichier_Error

temp = Dir$(fichier)  'recherche si le fichier existe
If temp <> "" Then
    ' Le fichier existe

    ' Recherche l'exécutable associé
    result = FindExecutable(fichier, vbNullString, fileappli)
    If result > 32 Then
        ' Association trouvée
        i = InStr(1, fileappli, Chr(0), vbBinaryCompare) - 1
        fichAOuvrir = """" & Left$(fileappli, i) & """ " & fichier
    Else
        ' Aucune association de trouvée
        OuvrirFichier = False
        Exit Function
    End If
Else
    ' Le fichier n'existe pas
    OuvrirFichier = False
    Exit Function
End If

' Ouverture du fichier
pid = Shell(fichAOuvrir, vbMaximizedFocus)
If pid <> 0 Then
    ' Si attente fermeture demandé, on suspend le process jusqu'à que le logiciel soit fermé.
    If attenteFermeture = True Then
        phnd = OpenProcess(SYNCHRONIZE, 0, pid)
        If phnd <> 0 Then
            Call WaitForSingleObject(phnd, INFINITE)
            Call CloseHandle(phnd)
        End If
    End If

    OuvrirFichier = True
Else
    OuvrirFichier = False
End If

   On Error GoTo 0
   Exit Function

OuvrirFichier_Error:

    OuvrirFichier = False

'---- Code à personaliser en cas d'erreur -------------------------------------------------
    Dim message As String
    message = "Erreur " & Err.Number & " (" & Err.Description & ") dans la procedure OuvrirFichier" & vbCrLf & vbCrLf
    message = message & "Vérifier que le fichier est accessible !" & vbCrLf
    message = message & "Vérifier que le logiciel associé est un exécutable !"
    MsgBox message, vbCritical Or vbOKOnly, "ERREUR - OuvrirFichier"
'------------------------------------------------------------------------------------------

End Function


 Conclusion

Copier ce code dans un module

L'utilisation se fait ainsi :

retour = OuvrirFichier("Nom&CheminFichier")        ' Pour une exécution asynchrone
retour = OuvrirFichier("Nom&CheminFichier", False) ' Idem
retour = OuvrirFichier("Nom&CheminFichier", True)  ' Pour une exécution synchrone (suspension du process et attente de fermeture)

Problème connu et géré (voir partie "Code à personnaliser"): La fonction Shell génère une erreur si l'applicatif associé n'est pas un exécutable. Dans ce cas l'ouverture du fichier ne marche pas (ex: Fichier image, lorsque c'est l'"Aperçu des images et Télécopie Windows" qui est associé aux fichiers images


 Historique

27 septembre 2006 18:53:12 :
Correction des fautes, Rajout des déclarations oubliées
09 octobre 2006 16:01:05 :
Correction de l'association des flags d'option pour le MsgBox : vbCritical & vbOKOnly --> vbCritical Or vbOKOnly

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) FENÊTRE D'ATTENTE AVEC BARRE DE PROGRESSION

 Sources de la même categorie

ECLATER UN CLASSEUR EXCEL EN AUTANT DE FICHIERS QUE DE FEUIL... par GMY
Source avec Zip Source avec une capture Source .NET (Dotnet) MAGIC FILE NAME : RENOMMEZ VOS FICHIERS AUTOMAGIQUEMENT ! par Erudix
Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa

 Sources en rapport avec celle ci

Source avec Zip OUVRIR TOUS LES FICHIERS EXCEL D'UN DOSSIER ET DE SES SOUS-D... par Unforgiven3303
Source avec Zip Source .NET (Dotnet) (.NET) EXTRACTION DES MINIATURES DES FICHIERS (COMME DANS L'... par ShareVB
Source avec Zip OUVRIR DES HTA SANS MESSAGE DE LA PART DE WINDOWS par David78390
Source avec Zip EXTRACTION DES MINIATURES DES FICHIERS (COMME DANS L'EXPLORA... par ShareVB
Source avec Zip RÉCUPÉRER LE HANDLE APRÈS UN SHELLEXECUTE par jack

Commentaires et avis

Commentaire de jack le 27/09/2006 19:49:22 administrateur CS

Salut. L'API ShellExecute fait la même chose en une ligne.
Dis nous pourquoi tu as voulu passer par des chemins plus complexes, ou quels sont ses +

Commentaire de casy le 27/09/2006 21:41:59


En fait, à l'époque ou j'ai fait ce code, je ne connaissais pas ShellExecute (que je ne connais toujours pas d'ailleurs).

Comme ce code est éprouvé depuis maintenant 5ans et que le sujet reviens régulièrement sur le forum.

Commentaire de casy le 27/09/2006 21:56:26


Ok pour ShellExecute qui remplace la première partie de mon code.

Par contre comment rendre l'opération synchrone dans ce cas là ?

Commentaire de romit le 27/09/2006 22:42:24

Très juste. De plus la programmation justement c'est créer et pas utiliser ce qui est deja fait. Je suis bien conscient qu'on utilise Visual Basic ;)
Mais pourquoi ne pas essayer de recréer soi même ses fonctions. On va dire que c'est moins optimisés et tout ça. Pour 1/4 de secondes on s'en fiche complement de plus personne n'est obligé de l'utiliser !

Raison de plus: L'application peut être synchronisée avec l'application ouverte !

Donc : Pourquoi ne pas le faire sois même.

Bref je te mets 9/10 ;)

Commentaire de romit le 27/09/2006 22:45:59

CQFD ^^

Commentaire de casy le 27/09/2006 22:49:28

Merci Romit.

Pour la synchro, on doit pouvoir y arriver avec ShellExecuteEx, mais au premier essai j'ai eu droit à un BSOD (c'est quand même rare sous XPSP2). Donc voilà, j'étudierais cela une autre fois.

Commentaire de MadM@tt le 27/09/2006 23:38:55

Salut, Y'a du bon dans chaque code, la on peut réutiliser le tiens pour par exemple récupérer le nom de l'executable associé à une extension (et pas l'executer derrière), ce qui peut etre utile dans certains cas.
Enfin ça peut toujours servir, mais c'est vrai que ShellExecute fonctionne bien, meme si j'ai jamais fait gaffe si on pouvait attendre la fin dexecution du programme.

++

Commentaire de Renfield le 28/09/2006 00:37:59 administrateur CS

exemple avec ShellExecuteEx :

http://www.vbfrance.com/codes/SHELLANDWAIT-EXECUTER-APPLICATION-ATTENDRE-FIN-RENVOYER-SON-CODE_34867.aspx

Commentaire de BruNews le 28/09/2006 00:52:56 administrateur CS

CASY, que ce soit clair, je ne mets pas en cause ton code qui est tout à fait correct.

ROMIT, je tiens par contre à rectifier ce que tu dis, important si qlq débutant passe par ici.

La programmation en vue de création, il y a des langages pour cela, VB comme tout interprété est fait pour utiliser des composants, pas grand chose d'autre. Quand tu veux faire en VB ce qui est déjà fourni, même en s'appliquant ce sera toujours plus mal et donc plus lent. Personne n'y peut rien, c'est inhérent aux interprétés.
Voyons cela par l'exemple:
- On Error GoTo OuvrirFichier_Error
chargement d'enorme structure et registres sur la pile qu'il faudra enlever en sortie, très couteux en cycles et totalement inutile si fait par API qui ne déclenche jamais d'erreur mais renvoie juste une valeur pour indiquer réussite ou échec.
- temp = Dir$(fichier)
GetFileAttributes aurait dit idem si fichier existe mais sans provoquer un SysAllocString ni le SysFreeString que vb appellera en sortie de func.
- pid = Shell(fichAOuvrir, vbMaximizedFocus)
Voila où je voulais arriver, ceci nous ramène à la CASE DEPART, Shell vb est un appel à ShellExecuteEx et tout ce qui a été fait avant a été pure perte de temps car l'API fait le check complet des arguments. Elle aurait idem en interne l'appel FindExecutable mais sans les allocs désallocs mémoire comme ceux vus plus haut ou ceux ci:
i = InStr(1, fileappli, Chr(0), vbBinaryCompare) - 1
fichAOuvrir = """" & Left$(fileappli, i) & """ " & fichier

Pour résumer, ne jamais faire par VB ce qui peut être appelé en API ou autre code natif, l'utilisateur final vous en sera reconnaissant (surtout son système).

Commentaire de Renfield le 28/09/2006 09:28:56 administrateur CS

Cela dit...
ajouter un controle avec FindExecutable, peut permettre de ne lancer un fichier (PDF, par exemple) que si une application lui est associée...
et de proposer, par exemple, de télécharger un logiciel pour le visionner...


NB: vbCritical & vbOKOnly
est, je l'espere une simple faute de frappe...(on se retrouve a passer 160 comme flag, au lieu de 16) tu voulais bien sur taper : vbCritical Or vbOKOnly
(voire même vbCritical, puisque VbOKOnly vaut 0)

Commentaire de casy le 28/09/2006 10:12:27


Bien vu pour les options, Renfield, vbCritical Or vbOKOnly évidement.

Pour FindExecutable aussi d'ailleur.

J'ai développer ce code au départ, car le client me demandait une option pour ouvrir le manuel d'utilisation (au format pdf) depuis la page de garde du logiciel. J'ai d'abords mis le chemin de acrobat reader en dur, mais en essayant sur plusieurs pc (version différentes de AR) je me suis appercu que suivant les version de AR, les chemins d'installation étaient différents, pas possibile de coder en dur. Puis ce n'était pas forcément AR qui était installé. De plus l'exigeance était de désactiver le bouton si AR n'était pas installé sur la machine (chose qui ne devait normalement pas arrivé, puisque les machines étaient préparées en usine avant livraison).
Dans ces logiciels là, le code est divisé en 2, la partie recherche au lancement de l'appli (sub main) et la partie "shell" sur le bouton de la doc.

BruNews, je suis d'accord avec toi, une api windows sera toujours plus rapide que l'équivalent en code vb. A voir ensuite pour chaque cas, si le gain de temps, n'est pas perdu dans les appels à l'api ou dans la souplesse du code ou autres subtilités.

Commentaire de eldim le 28/09/2006 16:06:28

Bonjour,
J'ai comme une impression de déja vu... lol

Commentaire de romit le 28/09/2006 16:24:52

Moi ce que je dit c'est que essayer de recréer sois même ses fonctions c'est approfondir son savoir (c'est beau ce que je dis :p )

Même juste recréer une fonction sans l'integrer a un logiciel mais simplement pour voir comment elle est faite, ou par défi ^^

Commentaire de romit le 28/09/2006 16:27:01

RenFiled, je dis peut-etre une connerie mais je ne sais pas la différence entre.

vbCritical & vbOKOnly et vbCritical Or vbOKOnly

Lol, les deux fonctionnent, non ?

Commentaire de Renfield le 28/09/2006 16:38:46 administrateur CS

"Renfield"

&  est le symbole indiquant la concaténation de deux chaines de caractères. A defaut d'avoir deux chaines de caractère, VB va effectuer un transtypage (cast).

vbCritical, qui vaut 16, par exemple, va donner "16"
vbOkOnly, lui vaut 0. une fois "transformé" en String, ca va donner "0"

au final, tu auras effectué "16" & "0"  ce qui donne bien entendu "160".

deuxième transtypage après, par la fonction MsgBox, qui attend une valeur numérique.
"160" devient alors 160

on est donc bien loin de 16 Or 0  qui donne 16


c'est pour cela qu'il faut utiliser & pour les concaténations (et pas '+' comme on le vois parfois)
et qu'il faut utiliser Or (et non And comme on le vois parfois) pour combiner des Flags...

en plus, c'est moins lourd pour le système, qui a moins de transtypages (inutiles de surcroit) a faire

Commentaire de casy le 28/09/2006 17:24:23

Faux Renfield

VB ne va pas faire de transtypage. Il va appliquer l'opération "Et Logiqque"

Dans ce cas ici, ça marche par vbOkOnly = 0

Mais en faisant l'opération sur admettons 3 et 5

3 And 5 = 1, alors que 3 Or 5 = 7

Commentaire de casy le 28/09/2006 17:29:21

D'ailleurs c'est faux, on dit tous une connerie depuis le début, vbCritical & vbOKOnly ne marche pas

vbCritical & vbOKOnly = vbOkOnly. L'icone (vbCritical) ne s'affiche pas.

tandis que vbCritical or vbOKOnly = vbCritical (parce que vbOkOnly=0), là, l'icone s'affiche.

Commentaire de Renfield le 28/09/2006 17:47:41 administrateur CS

& ne fais pas de Et logique, c'est certain. (And)

dangereux de dire que :
vbCritical & vbOKOnly = vbOkOnly

l'icone ne s'affiche pas, c'est parce que la MessageBox ne retrouve pas ses petits, et qu'en interne, il doit y avoir (en gros, je sais bien que c'est pas en VB derriere^^) :

If Style And VbCritical Then
   '# Affichage de l'icone critical
End If


pour la concaténation, fais le test :


Private Sub Form_Load()
    Test vbCritical & vbOKOnly
End Sub

Public Sub Test(ByVal Flags As VbMsgBoxStyle)
    MsgBox Flags
End Sub

Commentaire de casy le 28/09/2006 18:00:29

Ok, je m'incline.

Mais j'ai les boules. On m'a toujours appris que & et AND c'était la même chose, ce n'est pas le cas.

Heureusement que dans les opérations logiques je met rarement &, je met AND car je prefère voir en clair l'opération. C'est un des tout petit reproches que je fais au C, surtout quand on mélange & et &&, ....

Commentaire de Renfield le 28/09/2006 18:06:27 administrateur CS

j'ignore qui t'a appris cela... c'est pour le moins de dangereuses croyances :S

Commentaire de eldim le 28/09/2006 18:10:06

(croyance-informatique
religion-raison...   ) très différent à chaque fois...

Commentaire de casy le 28/09/2006 18:13:31

Quelqu'un qui comme moi, en travaillant sur plusieurs langages, doit avoir tendance à mélanger les subtilité de chacun d'eux.

Alors entre VB5/6, VB.NET2003, VB.NET2005, VC6, C pour µControleur, HPBasic, il y a de quoi s'y perdre.
C'est pour cela que pour l'instant (tant que pas d'utilité), j'ai renoncer à Delphi, C#, Php et autre.

Commentaire de wikad le 04/03/2007 23:31:54

Merci pour la source, c'est bien fait.

Commentaire de sharkus le 15/06/2007 16:18:04

Impéccable cette source, exactement se que je cherchais, en plus bien expliqué.
Merci

Commentaire de Sinsitrus le 02/07/2008 12:05:41

Variable non définie... pourquoi il m'envoie cette erreur ?

Private Sub B_NotePad_DblClick()
Retour = OuvrirFichier("C:\Program Files\Windows NT\Accessoires\wordpad.exe")        ' Pour une exécution asynchrone
Retour = OuvrirFichier("C:\Program Files\Windows NT\Accessoires\wordpad.exe", False) ' Idem
Retour = OuvrirFichier("C:\Program Files\Windows NT\Accessoires\wordpad.exe", True)  ' Pour une exécution synchrone
End Sub

Commentaire de casy le 02/07/2008 12:10:09

Ce n'est pas Wordpad.exe que tu dois passer en paramètre à la fonction, mais le fichier que tu veux ouvrir dans Wordpad.

Ce fichier doit déjà exister sur le disque !!!

Commentaire de Renfield le 02/07/2008 12:12:56 administrateur CS

tu ne sembles pas avoir défini TA varaible nommmée Retour

(dont tu ne te sers pas en lecture, donc inutile ici)

Commentaire de PaTaTe le 13/10/2008 02:03:50

Je me suis amusé à chercher des informations sur l'API FindExecutable car personnellement AUCUNS codes que j'ai pu écrire et testé le concernant n'a marché. Pourquoi ? j'aimerais bien le savoir. Aucune association n'est trouvée quelque soit le code ou l'extension utilisée. Un avis sur la question ?

Commentaire de Renfield le 13/10/2008 10:47:54 administrateur CS

pas grand chose à en dire....


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

Private Sub Form_Load()
Dim sBuffer As String
    sBuffer = Space$(260)
    If FindExecutable("win.ini", Environ$("WinDIR"), sBuffer) > 32 Then
        sBuffer = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
    Else
        sBuffer = "Pas d'association trouvée"
    End If
    MsgBox sBuffer
End Sub

Commentaire de PaTaTe le 13/10/2008 15:03:34

Je sais c'est étrange ça a toujours fonctionné et il ne devrait pas en être autrement mais même ton code me sort "Pas d'association trouvée". Et pourtant l'association existe belle et bien.

Commentaire de casy le 13/10/2008 17:22:37

Tu as quelle configuration, machine, système d'exploitation, ... ?

Commentaire de PaTaTe le 14/10/2008 00:14:44

Un PC tout ce qui a de plus normal sous Windows XP SP3.

Commentaire de casy le 14/10/2008 21:14:39

Ben ya pas de raison que ça marche pas alors puisque c'est que qui est utiliser par le système, l'explorateur entre-autre.

Ou alors ton Windows est vérolé, sinon je vois pas

Commentaire de PaTaTe le 14/10/2008 23:23:17

Je pensais ça aussi mais que dire alors des autres machines où j'ai tester la chose ? :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Ouvrir un doc [ par Ethan0026 ] Bonjour,j'ai une question un peu bête à poser pour une prog en vb.net :J'ai un fichier .pdf que je souhaiterai executer avec mon prog. J'ai donc fait Trouver un fichier [ par Charlie ] Allo...Je veux lancer le logiciel Image-Pro Plus en effectuant un shell sur le fichier, ipwin.exeToutefois, j'aimerais que mon Shell fonctionne peut i Pb pour ouvrir un fichier [ par Gwen ] J'utilise le shell pour ouvrir une base access :Shell NomBase, vbNormalFocusMais il m'affiche toujours ce message :"erreur d'execution '53'fichier int OUVRIR EXCEL [ par nagattaque ] Salut tout le monde...Voila j'ai un petit souci et je voulais savoir s'il y a une solution a mon probleme...Je suis sous access2000 et ds le code d'un pb fction shell pr ouvrir fichier excel,ca urge,merci [ par nikostaf ] salut, j'ai un pb je veux juste ouvrir un fichier excel pour le visualiser donc le plus simple est d'utiliser un shell. code:Logiciel = "c:\program fi Script Shell pour lancer un fichier XML [ par mockmock ] Bonjour,Je vous explique: sur mon serveur (Linux), je possède un fichier XML lié avec une feuille XSLT. Après exécution du fichier XML, celui-ci me re Script Shell pour ouvrir fichier XML [ par mockmock ] Bonjour,Je vous explique: sur mon serveur (Linux), je possède un fichier XML lié avec une feuille XSLT. Après exécution du fichier XML, celui-ci me re lancer un fichier par le shell [ par coquille100 ] je veux pouvoir ex&#233;cut&#233; un fichier a partir de ca (le but complet est assez complik&#233; ne me demand&#233; pas l'interet c trop long a exp commande shell et shellexecute [ par tof72 ] BonjourJe voudrais&nbsp;ouvrir&nbsp;un fichier pdfPouvez vous me donn&#233; la commande avec&nbsp;shell pour ouvrir directement le fichier.Pouvez vous Ouvrir un fichier non exe en vba [ par Tsetse71 ] Bonjour,Petite question a 2 balles : - comment ouvrir un fichier non exe en vba en sachant que la methode shell ne fonctionne pas elle me renvoie l'er


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,123 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales