Option Compare Database Option Explicit Function TablasIdenticas(ByVal Tabla1 As String, ByVal Tabla2 As String) As Boolean 'Esta tiene truco. Comparamos si dos tablas son iguales o no, intentando un 'INsert Into de una a otra. Para que el Insert Into se produzca,sin error, las 'tablas tienen que ser identicas. 'Tiene truco, ya que para que no se produzca un Insert Into real, meto 'una clausula Where, con un campo ID autonumerico (Es un mero ejemplo) 'puesto a un valor «impososible» 'Es decir, este metodo *no* es de proposito general,pues dependerá de cada caso 'que tenga que meter el nombre de un campo u otro. 'Es que si no hago el where, se puede producir el Insert Into real de una 'tabla a otra y eso no interesa, pues se trata simplemente de comparar 'las tablas, no de insertar registros. 'En fin, por si vale a alguien como idea.... On Error GoTo Errnoiguales Dim Sql As String Sql = "INSERT INTO " & Tabla2 & " SELECT * FROM " & Tabla1 & " Where ID=-1;" CurrentDb.Execute Sql TablasIdenticas = True Errnoiguales: End Function Function ComparaTablas(ByVal NombreTabla1 As String, ByVal NombreTabla2 As String) As Boolean Dim Estabase As DAO.Database Dim Objetotabla1 As DAO.TableDef Dim Objetotabla2 As DAO.TableDef Dim Campo1 As DAO.Field Dim Campo2 As DAO.Field Dim Devuelve As Boolean 'esta solo compara que los nombres sean identicos 'por lo tanto está sesgada e incompleta, tal y como te decia en las news Set Estabase = CurrentDb Set Objetotabla1 = Estabase.TableDefs(NombreTabla1) Set Objetotabla2 = Estabase.TableDefs(NombreTabla2) 'aqui, ya directamente, si el numero de campos 'de ambas tablas no coincide, directamente pasamos ya 'de recorrer sus nombres, pues evidentemente las 'tablas ya no son iguales. If Objetotabla1.Fields.Count <> Objetotabla2.Fields.Count Then ComparaTablas = False Exit Function End If For Each Campo1 In Objetotabla1.Fields For Each Campo2 In Objetotabla2.Fields If Campo1.Name = Campo2.Name Then Devuelve = True 'los dos campos coincidenen en el nombre 'pasamos a testear otro campo Exit For Else Devuelve = False End If Next Campo2 If Devuelve = False Then 'en el anterior For hay un campo 'de Tabla1 que no se corresponde con 'Tabla2...salimos...pues las tablas 'ya no son iguales ComparaTablas = False Exit Function End If Next Campo1 ComparaTablas = True Estabase.Close Set Estabase = Nothing Set Objetotabla1 = Nothing Set Objetotabla1 = Nothing End Function Sub prueba() MsgBox ComparaTablas("tabladestino", "tutabla") End Sub