Quisiera  saber si existe algun comando que desde un 
módulo de access(97) me permita copiar solo la estructura 
de una tabla.

RESPUESTA DE CARCAR
===================

Supongo que lo que quieres es crear una tabla nueva con todos los
campos de una ya existente y sin registros.

Si es así, ejecuta este código:

CurrentDb.Execute "SELECT * INTO NuevaTabla FROM Tabla WHERE 1=0"

La condición WHERE 1 = 0 (uno = cero) hace que no se grabe ningún
registro y que se duplique la tabla original.

APORTACION DE CHEA:
===================
Fusilando la respuesta de Car Car, por cierto muy buena, que te muestra el
Búho, he hecho este procedimiento:

Public Sub CopiaTablaaVacía(Origen As String, NombreNueva As String)
 Dim stSQL As String
 stSQL = "SELECT " & Origen & ".* INTO " & NombreNueva & " FROM cuentas where false;"
 DoCmd.RunSQL stSQL
End Sub

Puedes copiarlo en un módulo y luego, en cualquier evento, por ejemplo, en
el clic de un botón, pones:

CopiaTablaaVacía "Nombredelatabla a copiar" , "Nombre de la nueva tabla"


Sigue el HILO
=============

Hola CarCar, si bien es una solucion ingeniosa :)), esta 
solucion no copia algunas carateristicas de la tabla como 
por ejemplo: indices, comentarios, valores predeterminados.
Si es posible encontrar otra solucion, por favor 
mencionarlo, mientras tanto utilizaremos tu solucion e 
iremos añadiendo lo demas a mano :((.


RESPONDE JUAN M. AFAN DE RIBERA
===============================

también podemos hacerlo en 2 pasos, copiar la tabla y luego borrar todos sus
registros:

Function CopiaTabla(nomTablaVieja As String, nomTablaNueva As String)

  DoCmd.CopyObject , nomTablaNueva, acTable, nomTablaVieja
  CurrentDb.Execute "Delete * From " & nomTablaNueva & ";", dbFailOnError

End Function

y esto sí que respeta los comentarios, indices, valores predeterminados...
pero sin registros, claro



Sigue el hilo:

Hola Juan, antes que nada felicitarte por lo del MVP (mas 
vale tarde que nunca) hace rato que se lo merecian tu y 
los demas! :))
Ahora disculpame si parezco un poco cargoso :(( pero yo se 
que a Uds les gustan los retos. Lo que pasa es que por lo 
general mis usuarios manejan tablas del orden de los 200MB 
en adelante y las copias de las tablas tienen su 
consiguiente demora, si ademas le añadimos el borrado de 
los mismos ufff y luego la compactacion ufff. Mi objetivo 
es generar una Base de Datos mensual que empiece de cero. 
Ya tengo generado todo el codigo que transfiere tablas 
adjuntas, consultas, formularios, informes, macros y 
modulos. El problema son las estructuras de las tablas, 
deberia haber algo parecido (en codigo) a la opcion 
de "Solo definicion" cuando uno importa una tabla 
manualmente.
De todas formas (despues de todo el rollo que me he 
mandado!) usaré tu solución mientras seguimos buceando en 
el mundo fascinante del Access.


RESPONDE BUHO
=============


' Es un ejemplo parcial de otro que tengo mas completo.-
'Por eso, como he cortado codigo, espero que fucnione y no haya metido la pata
' Creo que hace lo que pides, o sea, que copia solo la
' estructura de la tabla y sus propiedades.



'Por ejemplo, desde cualquier boton de comando
'
     Dim dbsSRC As Database, dbsDest As Database
     Set dbsSRC = DBEngine.Workspaces(0).OpenDatabase("C:\UnaCarpeta\BaseOrigen.Mdb")
     Set dbsDest = DBEngine.Workspaces(0).OpenDatabase("C:\OtraCarpeta\BaseDestino.Mdb")
     CopyTables dbsSRC, dbsDest 'Copio tablas y estructura, excepto las del Sistema

' esto ya serían las otras rutinas


'Le debes pasar los parametros de base origen, base destino
'que son variables Database de Dao.
' como puedes ver en el codigo.

Sub CopyTables(dbsSRC As Database, dbsDest As Database)
    ' Esta rutina ya hace efectiva la copia de tablas
    ' sin datos

    Dim tbfSrc As TableDef, tbfDest As TableDef
    Dim IntBuscar As String
    On Error GoTo ControlERROR
    For Each tbfSrc In dbsSRC.TableDefs
         If (tbfSrc.Attributes And dbSystemObject) Then
         Else
            Set tbfDest = dbsDest.CreateTableDef(tbfSrc.Name, _
                tbfSrc.Attributes, tbfSrc.SourceTableName, tbfSrc.Connect)
            If tbfSrc.Connect = "" Then
                CopyFields tbfSrc, tbfDest
                CopyIndexes tbfSrc.Indexes, tbfDest
            End If
            CopyProperties tbfSrc, tbfDest
            NumerodeTablas = NumerodeTablas + 1
            dbsDest.TableDefs.Append tbfDest
         End If
        
    Next
    On Error GoTo 0
    Exit Sub
ControlERROR:
    MsgBox "La Tabla: " & UCase(tbfSrc.Name) & " ya existe en su Base de Datos." & Chr(13) & _
    "Se cancela su copia y se continua con el proceso...", vbInformation + vbOKOnly, "PULSE ACEPTAR PARA CONTINUAR TRABAJANDO"
    NumerodeTablas = NumerodeTablas - 1
    Resume Next
    
End Sub

Sub CopyFields(objSrc As Object, objDest As Object)
    Dim fldSrc As Field, fldDest As Field
    
    For Each fldSrc In objSrc.Fields
         If TypeName(objDest) = "TableDef" Then
              Set fldDest = objDest.CreateField(fldSrc.Name, fldSrc.Type, _
               fldSrc.Size)
         Else
              Set fldDest = objDest.CreateField(fldSrc.Name)
         End If
         CopyProperties fldSrc, fldDest
         objDest.Fields.Append fldDest
    Next
    Exit Sub

End Sub

Sub CopyIndexes(idxsSrc As Indexes, objDest As Object)
 
     Dim idxSrc As Index, idxDest As Index, propSrc As Property
     For Each idxSrc In idxsSrc
          Set idxDest = objDest.CreateIndex(idxSrc.Name)
          CopyProperties idxSrc, idxDest
          CopyFields idxSrc, idxDest
          objDest.Indexes.Append idxDest
     Next

End Sub

Sub CopyProperties(objSrc As Object, objDest As Object)
     Dim prpProp As Property, temp As Variant
     On Error GoTo errCopyProperties
     For Each prpProp In objSrc.Properties
          objDest.Properties(prpProp.Name) = prpProp.Value
     Next
     On Error GoTo 0
     Exit Sub
errCopyProperties:
     Resume Next

End Sub

    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)