timetrack-pro/delete_and_recreate_modules.vbs
StillHammer 7c3dd3fb31 Add VBS scripts, documentation, and HTML form templates
- Test and helper VBS scripts for VBA MCP development
- Technical reference documentation and PDFs
- HTML form templates for all 5 forms
- PowerShell and Python scripts for PDF/documentation generation

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-21 11:53:09 +07:00

86 lines
2.3 KiB
Plaintext

On Error Resume Next
Dim accessApp
Set accessApp = CreateObject("Access.Application")
accessApp.OpenCurrentDatabase "C:\Users\alexi\Documents\projects\timetrack-pro\db\TimeTrackPro.accdb"
accessApp.Visible = True
Dim vbProj
Set vbProj = accessApp.VBE.VBProjects(1)
WScript.Echo "=== Deleting standard modules ==="
' Supprimer les modules standards Form_*
Dim modulesToDelete
modulesToDelete = Array("Form_frm_Accueil", "Form_frm_Clients", "Form_frm_Projets", "Form_frm_SaisieTemps", "Form_frm_Historique")
Dim i, comp
For i = LBound(modulesToDelete) To UBound(modulesToDelete)
For Each comp In vbProj.VBComponents
If comp.Name = modulesToDelete(i) And comp.Type = 1 Then ' 1 = Standard Module
vbProj.VBComponents.Remove comp
WScript.Echo "Deleted: " & modulesToDelete(i)
Exit For
End If
Next
Next
WScript.Sleep 1000
WScript.Echo ""
WScript.Echo "=== Creating form modules ==="
' Recréer les modules de formulaire
Dim formNames
formNames = Array("frm_Accueil", "frm_Clients", "frm_Projets", "frm_SaisieTemps", "frm_Historique")
For i = LBound(formNames) To UBound(formNames)
WScript.Echo "Processing " & formNames(i) & "..."
' Ouvrir en mode Design VISIBLE
accessApp.DoCmd.OpenForm formNames(i), 2 ' acDesign, pas hidden
WScript.Sleep 1000
' Essayer de créer le module
On Error Resume Next
Err.Clear
' Méthode 1: Via HasModule
accessApp.Forms(formNames(i)).HasModule = True
If Err.Number = 0 Then
WScript.Echo " -> Created via HasModule"
Else
WScript.Echo " -> HasModule failed: " & Err.Description
Err.Clear
' Méthode 2: Via DoCmd ViewCode
accessApp.DoCmd.OpenForm formNames(i), 2
WScript.Sleep 500
accessApp.DoCmd.RunCommand 401 ' acCmdViewCode - ouvre l'éditeur VBA du formulaire
WScript.Sleep 1000
WScript.Echo " -> Opened code view"
End If
' Fermer le formulaire
accessApp.DoCmd.Close 2, formNames(i), 1 ' acSaveYes
WScript.Sleep 500
Next
WScript.Sleep 1000
WScript.Echo ""
WScript.Echo "=== Verification ==="
For Each comp In vbProj.VBComponents
WScript.Echo comp.Name & " - Type: " & comp.Type
Next
WScript.Echo ""
WScript.Echo "Done! Press OK to close Access."
accessApp.CloseCurrentDatabase
accessApp.Quit
Set accessApp = Nothing