Ciao a tutti,
ho intuito dove potrebbe essere il problema... ma non sono ancora arrivato alla soluzione...

Quando eseguo solo questa funzione il database viene chiuso correttamente:

codice:
Private Sub cmdEseguiMacro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEseguiMacro.Click
        Dim id As Integer
        Dim i, j As Integer
        Dim strApp As String

        If dgvMacro.Rows.Count = 0 Then
            MsgBox("Attenzione!!! Lista macro vuota!!!", MsgBoxStyle.Critical, TitoloApp)
            Exit Sub
        End If

        id = dgvMacro.Rows(dgvMacro.CurrentRow.Index).Cells(0).Value()
        pnlAttesa.Visible = True
        lblTitolo.Text = ListaMacro(id).NomeMacro

        ' Apro il file access visibile
        lblAttesaOperazione.Text = "Connessione al db in corso"
        Me.Update()
        ApriFileAccess(accApp, ProprietaFile.PercorsoLocale & ProprietaFile.NomeFile, True)
        For i = 0 To ListaMacro(id).ContAzioni - 1
            Select Case ListaMacro(id).ListaAzioni(i).TipoAzione
                Case AZIONE_SETWARNING
                    If ListaMacro(id).ListaAzioni(i).ListaArgument(0) = "0" Then
                        strApp = "Off"
                    Else
                        strApp = "On"
                    End If
                    lblAttesaOperazione.Text = "Esecuzione: " & ListaMacro(id).ListaAzioni(i).NomeAzione & " " & strApp
                    Me.Update()
                    accApp.DoCmd.SetWarnings(ListaMacro(id).ListaAzioni(i).ListaArgument(0))
                Case AZIONE_OPENQUERY
                    lblAttesaOperazione.Text = "Esecuzione: " & ListaMacro(id).ListaAzioni(i).NomeAzione & " - " & ListaMacro(id).ListaAzioni(i).ListaArgument(0)
                    Me.Update()
                    accApp.DoCmd.OpenQuery(ListaMacro(id).ListaAzioni(i).ListaArgument(0))
                Case AZIONE_MSGBOX
                    lblAttesaOperazione.Text = "Esecuzione: " & ListaMacro(id).ListaAzioni(i).NomeAzione
                    MsgBox(ListaMacro(id).ListaAzioni(i).ListaArgument(0), ListaMacro(id).ListaAzioni(i).ListaArgument(2), ListaMacro(id).ListaAzioni(i).ListaArgument(3))
            End Select
        Next

        pnlAttesa.Visible = False

        ' Chiudo il file access
        ChiudiFileAccess(accApp)
    End Sub
Il problema allora è nella funzione DammiDatiDataBase che non rilascia tutte le risorse.
E' come se i comandi
codice:
System.Runtime.InteropServices.Marshal.ReleaseComObject(Documento)
System.Runtime.InteropServices.Marshal.ReleaseComObject(Contenitore)
non venissero minimamente calcolati dal programma.


Andrea