VBA: ouvrir un fichier (de tout type) 2


Le langage VBA permet d'ouvrir un fichier dans son application associée indépendamment de son type. Peu importe à partir d'où vous utilisez le VBA (Excel, Word, un fichier batch,…) et peu importe s'il s'agit d'un fichier texte, d'un document PDF ou d'une image en JPG. À chaque fois, le code VBA qui suit ouvrira le fichier demandé dans sa propre application – donc par exemple, il ouvrira un "fichier Word" en Microsoft Word.

Ceci peut être assez pratique dans des applications VBA plus complexes mais également si vous souhaitez créer une liste de fichiers à ouvrir quand vous allumez votre PC.

Un autre exemple d'utilisation peut-être l'ouverture d'un fichier après son téléchargement à partir d'Internet.

Ouvrir un fichier en VBA: comment ça marche

En pratique, on doit créer un Object qui nous permettra de lancer une application. Ensuite, on ouvre le fichier voulu à l'intérieur de cet objet. Tout cela grâce à la fonction VBA Shell.

En pratique, on ne doit pas choisir l'application nous mêmes. C'est Windows qui s'en chargera en ouvrant le fichier dans l'application qui est associée au type de fichier que l'on veut ouvrir. C'est comme double-cliquer sur un fichier dans l'Explorateur Windows. Là aussi, Windows lance l'application approprié "lui-même".

Fonction VBA pour Ouvrir un fichier dans l'application appropriée

Et voici donc le code VBA nécessaire à l'ouverture d'un fichier indépendamment de son type. Dans cet exemple, on ouvre le fichier "MonFichier.txt" qui se trouve dans le dossier "C:\MonDossier". Le fichier "MonFichier.txt" sera, en tant que fichier texte, ouvert dans le Notepad (à moins que vous n'ayez associé le suffixe ".txt" à une autre application, par exemple Notpad++).

 

Sub OuvertureDeFichier()
'par Excel-Malin.com ( https://excel-malin.com )

On Error GoTo OuvertureFichierErreur
   Dim MonApplication As Object
   Dim MonFichier As String
   Set MonApplication = CreateObject("Shell.Application")
   
   MonFichier = "C:\MonDossier\MonFichier.txt" 'à remplacer par votre fichier
   MonApplication.Open (MonFichier)
   
   Set MonApplication = Nothing
Exit Sub

OuvertureFichierErreur:
   Set MonApplication = Nothing
    MsgBox "Erreur lors de l'ouverture de fichier..."
End Sub

 

Et voici une fonction VBA un peu plus élaborée. Elle utilise le nom et l'emplacement du fichier à ouvrir comme argument et est donc tout à fait générique. De plus, cette fonction teste si le fichier existe avant de l'ouvrir.

 

Public Function OuvrirFichier(MonFichier As String)
'par Excel-Malin.com ( https://excel-malin.com )
   
On Error GoTo OuvertureFichierErreur
   
   'vérifie si le fichier existe
   If Len(Dir(MonFichier)) = 0 Then
    OuvrirFichier = False
    Exit Function
   Else
   End If
   
   'ouvre le fichier dans son application associée
   Dim MonApplication As Object
   Set MonApplication = CreateObject("Shell.Application")
   
    MonApplication.Open (MonFichier)
    OuvrirFichier = True
   Set MonApplication = Nothing
   
Exit Function
OuvertureFichierErreur:
   Set MonApplication = Nothing
    OuvrirFichier = False
End Function

 

Exemples d'ouverture de fichiers de différents types en VBA

Voici quelques exemples pratiques. Pour pouvoir les utiliser, vous devez avoir copié le code VBA de la fonction OuvrirFichier (de la section précédente) dans un Module.

Ouvrir un fichier Word (.docx)

Sub OuvrirUnFichierWord()
'par Excel-Malin.com ( https://excel-malin.com )

'ceci va lancer Microsoft Word et ouvrir le fichier "Test1.docx"
OuvrirFichier ("C:\MonDossier1\Test1.docx")

End Sub

 

Ouvrir un fichier PDF (.pdf)

Sub OuvrirUnFichierPDF()
'par Excel-Malin.com ( https://excel-malin.com )

'ceci va lancer Acrobat Reader et ouvrir le fichier "Test2.pdf"
OuvrirFichier ("C:\MonDossier\Test2.pdf")

End Sub

 

Ouvrir un fichier PowerPoint (.pptx)

Sub OuvrirUnFichierPowerPoint()
'par Excel-Malin.com ( https://excel-malin.com )

'ceci va lancer Microsoft PowerPoint et ouvrir le présentation "Test3.pptx"
OuvrirFichier ("C:\MonDossier\Test3.pptx")

End Sub

 

Fonction VBA – façon concise

Si vous aimez le code VBA minimaliste, sachez qu'il est possible d'obtenir l'ouverture d'un fichier en une seule ligne de code VBA. Mais comme cela implique l'absence de gestion d'erreurs etc., je ne le conseille qu'à ceux "qui savent ce qu'ils font" 🙂

CreateObject("Shell.Application").Open ("C:\MonDossier\MonDocument.docx")

 

Pour aller plus loin

Si la manipulation de fichiers en VBA vous intéresse, vous trouverez sur Excel-Malin.com un tutoriel dédié à ce sujet: Manipulation basique des fichiers en VBA

Sinon, d'autres Codes sources VBA sont à votre disposition, notamment:

 

36 0

Pourrait vous intéresser


Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

2 commentaires sur “VBA: ouvrir un fichier (de tout type)