Grazie al suggerimento di By65Franco stò utilizzando il comando DBEngine(0)(0).Execute ma sono incappato in questo problema. Se lancio la sub test, qui sotto riportata, che contiene un errore voluto, nome campo errato, mi viene, giustamente restituito l’errore 3018. Se però correggo la sub e la rilancio mi continua a dare lo stesso errore, ma il reset di Id viene regolarmente eseguito. Sono quindi andato a vedere cosa mi viene restituito da DBEngine.Errors.Count quando rilancio la sub modifica ed il valore non è 0 ma 1, come se la collezione degli errori non venisse resettata ma mantenesse sempre gli errori precedentemente generati.
Per resettare gli errori devo chiudere e riaprire access.
Sub Test1()
On Error GoTo Err_Execute
Dim Strsql As String
Dim errLoop As Error
Debug.Print DBEngine.Errors.Count
Strsql = "ALTER TABLE Tab1 ALTER COLUMN ID COUNTER(1,1)"
DBEngine(0)(0).Execute Strsql, dbFailOnError
Err_Execute:
If DBEngine.Errors.Count > 1 Then
For Each errLoop In DBEngine.Errors
MsgBox "Error number: " & errLoop.Number & vbCr & _
errLoop.Description
Next errLoop
End If
End Sub
Ringrazio chi mi può dare una mano.