Newsgroup: it.comp.appl.access
Titolo: Come 'ripulire' file .mdb da form, variabili, moduli inutilizzati ?

Spesso nella scrittura di codice vengono usate delle variabili che poi, 
cambiando il codice non vengono piu' sfruttate.
Stessa cosa per alcune form
Stessa cosa per interi moduli o funzioni all'interno di essi
Conoscete qualcosa che possa automaticamente 'ripulire' da tutta 'sta roba 
inutile ?
Ciao e grazie
RobertoA 

 ha scritto nel messaggio 
news:4698f624$1...@newsgate.x-privat.org...

Ti rispondo a ricordi.
Tempo indietro mi ero creato uno scritto VB che rendeva private (o altrimenti public) tutte le 
functions.
Praticamente il giochetto stava nel compilare il codice ogni volta che una function veniva riscritta 
come Private Function.
Application ha una proprietà che si chiama IsCompiled: se questa era true dopo la compilazione, 
allora la privatizzazione era andata a buon fine, altrimenti la function veniva riscritta come 
public function. E si andava avanti.
Guarda, ti riporto il modulino da me utilizzato per questa cosa, tanto è abbastanza corto. Potresti 
riadattarlo tentando di cancellare uno alla volta tutti i "Dim" e rimettendoli in caso di errore di 
compilazione.
Una volta capito il meccanismo, fai tutto quel che vuoi, cancellando intere funzioni. Ecco per le 
funzioni potresti provare a rinominarle con dei nomi diversi e comunque non già utilizzati. In caso 
di compilazione a buon fine, potrai cancellare la funzione, altrimenti la lasci così com'è.
Ecco, a tua cura sostituire il percorso con il tuo db e disattivare macro autoexec o maschere di 
apertura, altrimenti va in pallone. E prova su una copia. Formula vista e piaciuta.
/////////////////////////////////////////////////////
Option Compare Database
Option Explicit
Dim Appl As New Access.Application
Dim n As Long
Dim OldStr As String
Dim CorrectStr As String
Dim NonCorretto As Boolean
Dim FineModulo As Boolean
'------------------------------------------------------------------------------------------
Function PublicToPrivate()
On Error GoTo errore
Echo False
Dim Appl As New Access.Application
Dim Mdl As Object
Dim AccMdl As Access.Module
Appl.OpenCurrentDatabase "C:\TuoDatabase.mdb"
For Each Mdl In Appl.CurrentProject.AllModules
    NonCorretto = False
    n = 0
    FineModulo = False
Res1:
    If Not Mdl.IsLoaded Then Appl.DoCmd.OpenModule Mdl.Name
    Set AccMdl = Appl.Modules(Mdl.Name)
    ControllaModulo AccMdl, NonCorretto, FineModulo
    Appl.DoCmd.Close acModule, Mdl.Name
    Appl.DoCmd.RunCommand acCmdCompileAllModules
    If Not Appl.IsCompiled Then
        NonCorretto = True
        GoTo Res1
    Else
        NonCorretto = False
        If Not FineModulo Then GoTo Res1
    End If
    Set AccMdl = Nothing
    Appl.DoCmd.Close acModule, Mdl.Name
    Set Mdl = Nothing
Next Mdl
Appl.DoCmd.RunCommand acCmdCompactDatabase
Appl.CloseCurrentDatabase
Appl.Quit
Set Appl = Nothing
Echo True
Exit Function
errore:
Echo True
Err.Raise Err.Number, Err.Source, Err.Description
End Function
'--------------------------------------------------------------------------------------------------------------------------
Function ControllaModulo(ByRef AccMdl As Access.Module, ByRef Correggi As Boolean, ByRef Fine As 
Boolean)
If Correggi Then
    AccMdl.ReplaceLine n, CorrectStr
    Fine = False
    Exit Function
End If
Do While Not n = AccMdl.CountOfLines
    n = n + 1
    If Mid(Trim(AccMdl.Lines(n, 1)), 1, 8) = "Function" Then
        OldStr = AccMdl.Lines(n, 1)
        CorrectStr = Replace(OldStr, "Function", "Public Function")
        AccMdl.ReplaceLine n, Replace(OldStr, "Function", "Private Function")
        Exit Function
    End If
    If Mid(Trim(AccMdl.Lines(n, 1)), 1, 15) = "Public Function" Then
        OldStr = AccMdl.Lines(n, 1)
        CorrectStr = AccMdl.Lines(n, 1)
        AccMdl.ReplaceLine n, Replace(OldStr, "Public Function", "Private Function")
        Exit Function
    End If
Loop
If n = AccMdl.CountOfLines Then Fine = True
End Function
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////