Ouvrir n'importe quel fichier à partir de vb

Résolu
stephvb62 Messages postés 5 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 17 février 2009 - 16 févr. 2009 à 12:04
ICLM Messages postés 4 Date d'inscription mardi 14 novembre 2000 Statut Membre 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

7 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 6
16 févr. 2009 à 18:30
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..
3
shogun_60 Messages postés 30 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 6 mars 2009 1
16 févr. 2009 à 17:11
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) ")
0
stephvb62 Messages postés 5 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 17 février 2009
17 févr. 2009 à 08:39
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!
0
stephvb62 Messages postés 5 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 17 février 2009
17 févr. 2009 à 08:52
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shogun_60 Messages postés 30 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 6 mars 2009 1
17 févr. 2009 à 09:36
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)
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 6
17 févr. 2009 à 17:10
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..
0
ICLM Messages postés 4 Date d'inscription mardi 14 novembre 2000 Statut Membre Dernière intervention 21 août 2010
21 août 2010 à 18:07
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


 
0
Rejoignez-nous