Modules |
5.1 Cancellare un altro modulo e rigenerarlo opportunamente modificato. |
AntoGal |
(D) E' possibile da un modulo cancellare un altro modulo e rigenerarlo opportunamente modificato? (R) La funzione che segue, esegue una ricerca con sostituzione nel modulo indicato. Function TrovaESostituisci(mdl As Module, strTestoRicerca As String, strNuovoTesto As String) As Boolean Dim lngSRiga As Long, lngSCol As Long Dim lngERiga As Long, lngECol As Long Dim strRiga As String, strNuovaRiga As String Dim intCar As Integer, intPrima As Integer, intDopo As Integer Dim strSinistra As String, strDestra As String 'ricerca la stringa. If mdl.Find(strTestoRicerca, lngSRiga, lngSCol, lngERiga, lngECol) Then 'memorizza il testo della linea contenente la stringa. strRiga = mdl.Lines(lngSRiga, Abs(lngERiga - lngSRiga) + 1) 'determina la lunghezza della riga. intCar = Len(strRiga) 'determina il numero di caratteri che precedono il testo di ricerca. intPrima = lngSCol - 1 'determina il numero di caratteri che seguono il testo di ricerca. intDopo = intCar - CInt(lngECol - 1) 'memorizza i caratteri a sinistra del testo di ricerca. strSinistra = Left$(strRiga, intPrima) 'memorizza i caratteri a destra del testo di ricerca. strDestra = Right$(strRiga, intDopo) 'costruisce la stringa con testo di sostituzione. strNuovaRiga = strSinistra & strNuovoTesto & strDestra 'sostituisce la riga originale. mdl.ReplaceLine lngSRiga, strNuovaRiga TrovaESostituisci = True Else TrovaESostituisci = False End If Exit_TrovaESostituisci: Exit Function Error_TrovaESostituisci: MsgBox Err & ": " & Err.Description TrovaESostituisci = False Resume Exit_TrovaESostituisci End FunctionNel seguente esempio viene modificato un modulo appartenente ad un altro DB. Private Sub AggiornaDB() Dim appAccess As Access.Application, mdl As Module 'restituisce riferimento all'oggetto Application di Microsoft Access Set appAccess = CreateObject("Access.Application.8") 'apre database in Microsoft Access appAccess.OpenCurrentDatabase "C:\tuodb.mdb" appAccess.DoCmd.OpenModule "NomeTuoModulo" Set mdl = appAccess.Modules!NomeTuoModulo TrovaESostituisci mdl, "Public Const VersioneDemo As Boolean = False", "Public Const VersioneDemo As Boolean = True" appAccess.DoCmd.Save 'salva appAccess.CloseCurrentDatabase Set appAccess = Nothing MsgBox "Modifiche eseguite!", vbInformation End Sub |