Assis hoje que é feriado e com mais calma, consegui colocar o código a apagar em todas as tabelas,
utilizando o Commit e o Rolback, que é sempre uma mais valia para o cancelamento ou não da ação.
Teste por favor e retorne;
Private Sub MovApagar(DataX, DataY As Variant)
On Error GoTo Parar_Err
Dim NUm As Long, X As Integer, S As String
Dim Ws As Workspace, db As Database
Dim td As TableDef
Dim rst As Recordset
Set Ws = DBEngine(0) 'aplica o Workspace
Ws.BeginTrans 'inicia a transação
NUm = 0
For Each td In CurrentDb.TableDefs
If Mid(td.Name, 1, 4) <> "MSYS" Then
Set rst = CurrentDb.OpenRecordset(td.Name, dbOpenTable) 'Abre as tabelas
Set db = CurrentDb
'Apaga os dados entre a DataX e a DataY
Do While Not rst.EOF
If rst!TData >= DataX And rst!TData <= DataY Then
rst.Delete
NUm = NUm + 1
End If
rst.MoveNext
Loop
End If
Next td
' efectua ou cancela a transação
S = "Esta Operação Vai Eliminar Todos os Movimentos com Datas Entre: " & DataX & " 'e' " & DataY & " ?"
X = MsgBox(S, 32 + 4 + 256, "Mensagem")
If X = 6 Then 'sim
Ws.CommitTrans ' efectua a transação
Else
Ws.Rollback ' cancela a transação
Exit Sub
End If
If NUm = 0 Then
S = "Não Havia Movimentos no Período Indicado."
ElseIf NUm = 1 Then
S = "Um Movimento foi Apagado."
ElseIf NUm > 1 Then
S = Trim$(Str$(NUm)) & " Movimentos foram apagados."
Else
End If
' ' Avisa qtd de registros foram apagados
MsgBox S, vbInformation, "Movimento"
Parar_Fim:
rst.Close
db.Close
Exit Sub
Parar_Err:
MsgBox err.Description
Resume Parar_Fim
End Sub