Puedes utilizar ADOX para ambas cosas:
Dim objCatalog As Catalog, objTable As Table, blnCampo As Boolean, objColumn As Column
Set objCatalog = New Catalog
Set objCatalog.ActiveConnection=TuObjetoConnection
For Each objTable In objCatalog.Tables
Debug.Print objTable.Name
For Each objColumn In objTable.Columns
Debug.Print objColumn.Name
Next
Next
Para agregar un campo:
objTable.Columns.Append "MColumna",adChar,50
En http://msdn.microsoft.com/library/en-us/ado270/htm/admscadoapireference.asp tienes la documentación de ADOX.