1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| Private Sub Workbook_Open()
Const NomModule As String = "ModExport" 'Doit renvoyer le nom de ce module
Dim NomFichierModule As String, TempWB As Workbook
If Dir(Chemin & Mon_Module & ".bas") = "" Then
MsgBox "VBA-Code-File " & Chemin & Mon_Module & ".bas not found.", vbOKOnly, "VBA Code"
Else
'on enleve la protection
UnprotectVBProject ThisWorkbook, "pass"
DoEvents
'Je renomme l'ancienne version du module
ThisWorkbook.VBProject.VBComponents(Mon_Module).Name = "alt"
'Je supprime l'ancienne version du module
With ThisWorkbook.VBProject.VBComponents
.Remove .Item("alt")
End With
'Msgbox(ModuleExists("alt"))
'J'importe la nouvelle version depuis le .bas
ThisWorkbook.VBProject.VBComponents.Import (Chemim & Mon_Module & ".bas")
End If
'Remettre la protection
'Exporte le module "ModExport"
With ThisWorkbook
NomFichierModule = .Path & "\" & NomModule & ".bas"
ExportModul NomFichierModule, NomModule
End With
'Ajoute un classeur temporaire
With Application
.ScreenUpdating = False
.StatusBar = "Veuillez patienter .."
.Cursor = xlWait
.EnableEvents = False
End With
Set TempWB = Workbooks.Add
ActiveWindow.Visible = False
'Copie ModExport dans le classeur temporaire
TempWB.VBProject.VBComponents.Import NomFichierModule
'Supprime le fichier ModExport.bas
Kill NomFichierModule
'Programme la procedure de reouverture
Application.Run TempWB.Name & "!" & "Attendre", ThisWorkbook.FullName
'Ferme ce classeur en l'enregistrant avec le nouveau module
ThisWorkbook.Close True
End sub |
Partager