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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| Sub exportVBACode(pPathExportDir As String)
Dim obj As Access.AccessObject
Dim IdFile As Integer
Dim sMsg As String
' Traiter tous les modules un par un
sMsg = "Ecraser le fichiers VBA des modules (.bas)?"
If OverWriteFile(sMsg) = False Then Exit Sub
For Each obj In CurrentProject.AllModules
DoCmd.OpenModule obj.Name
' Ouvrir le fichier texte
IdFile = FreeFile
Open pPathExportDir & obj.Name & ".bas" For Output As #IdFile
DoCmd.Close acModule, obj.Name
' Ferme le fichier texte
Close #IdFile
Next
'Traiter tous les formulaires un par un
sMsg = "Ecraser le fichiers VBA des formulaires (.cls)?"
If OverWriteFile(sMsg) = False Then Exit Sub
For Each obj In CurrentProject.AllForms
DoCmd.OpenForm obj.Name, acDesign
If Forms(obj.Name).HasModule Then
' Ouvrir le fichier texte
IdFile = FreeFile
Open pPathExportDir & "Form_" & obj.Name & ".cls" For Output As #IdFile
' Ferme le fichier texte
Close #IdFile
End If
DoCmd.Close acForm, obj.Name
Next
'Traiter tous les états un par un
sMsg = "Ecraser le fichiers VBA des état (.cls)?"
If OverWriteFile(sMsg) = False Then Exit Sub
For Each obj In CurrentProject.AllReports
DoCmd.OpenReport obj.Name, acDesign
If Reports(obj.Name).HasModule Then
IdFile = FreeFile
Open pPathExportDir & "Report_" & obj.Name & ".cls" For Output As #IdFile
' Ferme le fichier texte
Close #IdFile
End If
DoCmd.Close acReport, obj.Name
Next
MsgBox "Opération terminée !", vbInformation, "Code VB exporté"
End Sub
Private Function OverWriteFile(pMsg As String) As Boolean
Dim bEcraseFile As Boolean
oOverWrite = True
If MsgBox(pMsg, vbQuestion + vbYesNo + vbDefaultButton2, "Export Modules") = vbNo Then
oOverWrite = False
End If
OverWriteFile = oOverWrite
End Function |
Partager