Lancement de macro a l'ouverture
Résolu
Bonjour,
j'aimerais que excel exécute une macro automatiquement si il détecte une certaine extension de fichier.
Je bute sur la détection de fichier.
J'ai placé ça dans un module :
Sub auto_open()
Dim Extension As String
Extension = IIf(Mid(StrReverse(ThisWorkbook.name), 4, 1) = ".", Right(ThisWorkbook.name, 3), Right(ThisWorkbook.name, 4))
MsgBox Extension
End Sub
Mais ça sort "XSLB" quelque soit le fichier ouvert... on dirait que c'est exécuté une fois excel ouvert mais avant le classeur.
Si vous avez une idée, merci bien.
Matthieu
j'aimerais que excel exécute une macro automatiquement si il détecte une certaine extension de fichier.
Je bute sur la détection de fichier.
J'ai placé ça dans un module :
Sub auto_open()
Dim Extension As String
Extension = IIf(Mid(StrReverse(ThisWorkbook.name), 4, 1) = ".", Right(ThisWorkbook.name, 3), Right(ThisWorkbook.name, 4))
MsgBox Extension
End Sub
Mais ça sort "XSLB" quelque soit le fichier ouvert... on dirait que c'est exécuté une fois excel ouvert mais avant le classeur.
Si vous avez une idée, merci bien.
Matthieu
8 réponses
-
ContributeurBonjour,
Workbook_Open() de ThisWorkbook se lance uniquement à l'ouverture du fichier le contenant.
Maintenant tu as aussi l'événement d'application App_WorkbookOpen(ByVal Wb As Workbook) qui se lance à l'ouverture de n'importe quel classeur (avec ou sans macro) et qui te passe en paramètre le Workbook qui vient de s'ouvrir.
Mais les événements App ne sont pas accessibles directement. Il faut faire qq manip avant de les avoir.
Voir ici : http://www.cpearson.com/excel/AppEvent.aspx
eric
-
Merci beaucoup !
Résolu avec ce code
Private WithEvents App As Application
Private Sub Workbook_Open()
Set App = Application
End Sub
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
If Wb.name <> "PERSONAL.XLSB" Then
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetExtensionName(Wb.name)
End If
End Sub
-