What I have done before, I guess it was the first thing to come to mind at the time, was to make a second definition of the table under a different name, then delete the table with the data, then make a copy of the 2nd defintiion then rename the copy to the original name - it works.
Another way is with the ADOX Catalog.
I will paste in a function that has code that does several things on the Catalog there are many commented lines since it was used for several purposes. Iterate through the properties collection to get the name of the property to set.
Function catalogInfoShort()
'-- set reference to ADOX library
'- Microsoft ADO Ext. 2.6 for DDL and Security
'-- Microsoft ActiveX data objects 2.6 library also needed for ADO
Dim cg As New ADOX.Catalog
Dim tb As New ADOX.Table
Dim cl As ADOX.Column
Set cg.ActiveConnection = CurrentProject.Connection
''tb.Name = "Test"
''tb.Columns.Append "col1", adInteger
''tb.Columns.Append "col2", adVarWChar, 50
''Debug.Print "table = "; cg.Tables("Test"

.Name
''cg.Tables.Append tb
'-rename a column
''Set tb = cg("test"

''Debug.Print "tb = "; tb.Name
''tb.Columns.Append "col3", adInteger
''cg.Tables.Append tb
''Set cl = tb("col2aa"

''Debug.Print cl
''cl.Properties("Jet OLEDB:Allow Zero Length"

= True
''cl.Name = "col2aa"
Set cg.ActiveConnection = CurrentProject.Connection
Set tb = cg.Tables("test"

Debug.Print "table name = "; tb.Name
'''Set cg.Procedures("myproc"

= "select * from customer"
Dim pp As Property
''Debug.Print "column = "; tb.Columns("Description"

.Properties("default"

.Value
''Exit Function
For Each cl In tb.Columns
Debug.Print "name = "; cl.Name
Debug.Print "type = "; cl.type
For Each pp In cl.Properties
Debug.Print "property name = "; pp.Name
Debug.Print "property value = "; pp.Value
Next
Next
End Function