Access 2007 COnvertire automaticamente [Embedded macro] in [Event Procedure]

Tutti i wizard di Access 2007 creano, per comportamento predefinito, Macro embedded associate ai vari comandi delle vostre maschere. Succede che se avete sviluppato una applicazione in A2007 e poi volete convertirla in una versione precedente di Access tutti i comandi realizzati dal wizard non funzioneranno più nelle versioni precedenti, che non conoscevano le "macro embedded". Allo scopo di convertire le macro in codice VB in modo automatico ho sviluppato una routine VB che fa proprio questo, ha bisogno di qualche affinamento  e utilizza la funzione SendKeys che non è proprio consigliabilissima, ma per il momento non ho trovato alternative… siccome mi pare abbastanaza utile la metto a disposizione comunque, se poi troverò qualche strada migliore, aggiornerò il codice.
La SendKeys è necessaria perche la funzione di conversione da Macro in Codice VB visualizza una finestra di dialogo, per permettere all’utente di scegliere le opzioni di conversioni e una finestra di Informazione che avverte che la conversione è terminata, capirete che se devo convertire un centinaio di macro queste due finestre visualizzate un centinaio di volte non sono proprio comodissime.
 
Public Sub ConvertToVbMacro()
    Dim frm As Object
    Dim ctl As Control
    Dim obj As Object
    Dim myFrm As Form
    Dim prop As Property
   
    For Each frm In CurrentProject.AllForms
        DoCmd.OpenForm frm.Name, acDesign
        Set myFrm = Forms(frm.Name)
        For Each ctl In myFrm.Controls
         
                For i = 0 To ctl.Properties.Count – 1
                   If ctl.Properties.Item(i).Category = 4 And ctl.Properties.Item(i).Type = 8 Then
                        If ctl.Properties.Item(i).Value = "[Embedded Macro]" Then
                            SendKeys "{Enter}{Enter}", False
                            DoCmd.RunCommand acCmdConvertMacrosToVisualBasic
                        End If
                   End If
                Next i
         Next
        
        On Error Resume Next
        DoCmd.RunCommand acCmdSave
        DoCmd.RunCommand acCmdClose
    Next
End Sub
Annunci

Informazioni su cinziapagani

Sono una libera professionista nel settore informatico, mi occupo prevalentemente di sviluppo Web e Database
Questa voce è stata pubblicata in Access 2007. Contrassegna il permalink.

Una risposta a Access 2007 COnvertire automaticamente [Embedded macro] in [Event Procedure]

  1. Luca Marangon ha detto:

    Utilissimissimo!

    Grazie!

    Luca

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...