Ouvrir n'importe quel fichier à partir de vb [Résolu]

Messages postés
5
Date d'inscription
mardi 3 février 2009
Dernière intervention
17 février 2009
- - Dernière réponse : ICLM
Messages postés
4
Date d'inscription
mardi 14 novembre 2000
Dernière intervention
21 août 2010
- 21 août 2010 à 18:07
Bonjour,

je voudrais pouvoir ouvrir un fichier (de tout type, excel, word pdf....) avec mon programme vb.
j'utilise la commande Shell est avec je peux ouvrir excel, word mais pas PDF (et je voudrais pouvoir ouvrir du catia ou autocad)

j'ai trouvé que la classe FileSystemObject pouvait être une solution mais de ce que j'ai compris, je n'ouvrirai que des .txt avec.

Un grand merci à celui (ou celle) qui prendra le temps de me répondre

voila comment je fais jusqu'à maintenant:
Sub Ouvrir()
Dim typeofdoc As String
typeofdoc = FM_Search_Doc.TextBoxAddress.Text

If typeofdoc = "FOLDER" Then
Shell "explorer.exe """ & FM_Search_Doc.TextBoxAddress.value & """"
End If

If typeofdoc = "XLS" Then
Shell "EXCEL.EXE """ & FM_Search_Doc.TextBoxAddress.value & """"
End If

If typeofdoc = "DOC" Then
Shell "WINWORD.EXE """ & FM_Search_Doc.TextBoxAddress.value & """"
End If

End Sub
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
3
Merci
Salut,

Plus simplement, regardes du côté de shellexecute qui permet d'ouvrir un type de fichier avec le logiciel approprié.

L'expérience, c'est une connerie par jour, mais jamais la même..

Merci lolokun 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de lolokun
Messages postés
32
Date d'inscription
mardi 5 décembre 2006
Dernière intervention
6 mars 2009
0
Merci
Salut,

Chez moi la commande shell fonctionne egalement avec les pdf, j'utilise cette méthode :

Shell(




"C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe (ou chemin de ton exe selon ta version d'adobe)  /p   cheminCompletDuFichier (avec le nom de fichier et l'extension) ")
Commenter la réponse de shogun_60
Messages postés
5
Date d'inscription
mardi 3 février 2009
Dernière intervention
17 février 2009
0
Merci
Le pb c'est que mon programme doit tourner sur différente bécane, et comme mon windows est en anglais, que celui de ma collègue est en espagnol, (C:\Archivos de Programa) et qu'en plus on a soit acrobat reader 9 soit le 7.0 standard....et ce sur 40 machines.
Bref, merci pour la réponse, c'est au moins quelque chose qui marche

Merci!
Commenter la réponse de stephvb62
Messages postés
5
Date d'inscription
mardi 3 février 2009
Dernière intervention
17 février 2009
0
Merci
Hola,

Je voulais éviter le shellExecute, qui me gén`re une erreur, mais le plus simple pour moi serait de régler cette erreur.
Le pb est au niveau du .hwnd (méthode ou data member not found), qui est inconnu de mon vb, pourtant j'ai déclaré la fonction comme ça:

Private Declare Function ShellExecute 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

Sub openfile()
ShellExecute Me.hwnd, "open", "chemindufichierrecuperedansunetextbox", "", App.Path, 1
End sub


DOIS JE ajouter une classe?

Muchas gracias para la ayuda
Commenter la réponse de stephvb62
Messages postés
32
Date d'inscription
mardi 5 décembre 2006
Dernière intervention
6 mars 2009
0
Merci
Salut,

Quelle est l'erreur générée?

Perso voila comment j'appelle la fonction ShellExecute que je déclare de la même manière que toi, ca fonctionne très bien :







ShellExecute(0, vbNullString, Chemin complet du fichier, vbNullString, vbNullString, vbNormalFocus)
Commenter la réponse de shogun_60
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
0
Merci
Bonjour,

Si tu es bien en vb 2005, la déclaration de cette API est un peu différente :
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _

ByVal hWnd As IntPtr, _

ByVal lpOperation As String, _

ByVal lpFile As String, _

ByVal lpParameters As String, _

ByVal lpDirectory As String, _

ByVal nShowCmd As Integer) As IntPtr

En 2005, tu as également la possibilite d'utiliser la class Process, et process.start(nomdufichieràexécuter)

L'expérience, c'est une connerie par jour, mais jamais la même..
Commenter la réponse de lolokun
Messages postés
4
Date d'inscription
mardi 14 novembre 2000
Dernière intervention
21 août 2010
0
Merci
ouvrir n'importe quel fichier à partir de vb

Au cas ou ce problème n'aurait pas été résolu:

Exemple avec Navigateur Internet

' ----------------------------------------------------------

Public Sub AccesWeb(AdresWeb As String, MeHwnd)

' acces Web

Dim Bidon As String
Dim DefauNavig As String * 255

DefauNavig = DefauProg("HTML")


If DefauNavig = Vl3275 Then
MsgBox "Navigateur InterNet non trouvé", vbExclamation, TitreMbox
Else

Reponse = ShellExecute(MeHwnd, "open", DefauNavig, AdresWeb, Bidon, SW_SHOW)

If Reponse <= 32 Then ' Error
MsgBox "Page WEB non Ouverte", vbExclamation, LibPbm & "InterNet"
End If

End If

' ----------------------------------------------------------

Public Function DefauProg(SufDef As String) As String

' chercher Programme par Défaut pour ouvrir un fichier selon suffixe

Dim FichDef As String
Dim ProgDef As String * 255
Dim BiDef As String
Dim NoDef As Integer

ProgDef = Space(255)
FichDef = Dir9W32 & RevBar & "\DEFOPROG." & SufDef
NoFH = FreeFile

Open FichDef For Output As #NoFH
Write #NoFH, "xxxx"
Close #NoFH

' ----------------------------------------- Recherche Prog associé

Reponse = FindExecutable(FichDef, BiDef, ProgDef)
DefauProg = Trim(ProgDef)

' -----------------------------------------
If Reponse <32 Or IsEmpty(DefauProg) Then DefauProg Vl3275

Kill FichDef

End Function

' ----------------------------------------------------------

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


 
Commenter la réponse de ICLM

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.