If you are using DAO there is a ton of information that can be returned. One thing to keep in mind is the Attributes and Properties collection. There is more stuff in those as well.
These can be confusing. Some properties are directly exposeable. For example in a tabledef the Name or RecordCount through the tabledef object. Other properties can only be found in the properties collection. When you provide a value to these properties it creates the property in the collection and gives it a name and a value. For example in a tabledef there is a Description box to enter a description of the table. If you put in a Description it creates that property in the collection with a name "Description" and a value of your text. There is not an existing property called Description. If you were to remove the value in the description box it does not assign the description property a value of "" but actually removes the property from the collection.
So to get the table Name you can do it directly
debug.print tdf.Name
To get the Description you would have to do it through the properties (and only if one exists)
debug.print tdf.properties("Description").value
So that is what gets tricky with the properties collection. If you loop the properties you are not going to see every potential property, but only those with a value (and those always exposed).
There may be a lot in the system tables, but I find DAO very easy because it is extremely well documented on the MSDN sites and others.