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 Function
Nel 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


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.