Using DDL directly in an SQL statement is a good way to go. There are a couple of additional ways using either the DAO library or the ADO library. DAO is generally restricted to Access but ADO can be used from any client that supports the ADO library, such as, Access, ASP, various C++ products and others.
Here is a function that does some things in ADO including creating a table.
Function catalogInfo()
'-- 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 cn As ADODB.Connection
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
''Exit Function
'-rename a column
''Set tb = cg("test"

''Set cl = tb("col2"

''cl.Name = "col2aa"
Exit Function
Set cg.ActiveConnection = CurrentProject.Connection
Set tb = cg.Tables("dbo_categories"

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
Here is a link that has some good examples of DAO and ADO code.