El código que te puse, no es para hacer una copia de seguridad, el nombre puede ser cualquiera, podría haberla llamado "TraspasaDatos" por ejemplo. Y en esencia, estás haciendo una copia de datos, puedes llamarla copia de seguridad, traspaso de datos, transferencia de información... como quieras. Técnicamente es una Copia de Seguridad de Históricos.
Las macros no se pueden automatizar desde Visual Basic, lo que sí se puede es convertir la macro a código de VBA y hacer un código que ejecute esa macro convertida.
Por lo que he entendido, tu macro pasa los datos de una tabla a otra, pero... ¿borras esos datos de la primera?
Te voy a poner el código que te copiará los datos de una tabla en la otra, y luego borra los datos de origen todos los días 1 de cada mes.
Function TraspasaDatos()
Dim DiaMes as integer
DiaMes = Day(Date)
If DiaMes = 1 Then
Currentdb.Execute "INSERT INTO Historico_dias SELECT * FROM Dias"
Currentdb.Execute "DELETE * FROM Dias"
End If
End Function
Para hacerlo de forma más correcta, habría que tener un fichero, tabla o algo donde almacenar si se ha efectuado la copia de datos o no, ya que si el día 1 abres 2 veces la base de datos, hará el proceso 2 veces.
Para que funciones, tienes que abrir el formulario donde se vaya a ejecutar en modo diseño, ir a las propiedades del formulario y buscar el evento "Al Cargar", en ese evento (On_Load en VBA es donde has de escribir el código.
De esta forma, cuando se abre el formulario se ejecuta de forma automática la función, comprueba que el día sea 1 o no y hace la copia de datos o no en base al día.