2009-05-29 50 views
5

El problema es que no puedo obtener el nombre de tabla que se ingresó en la variable, "tblName", sino que obtengo una base de datos correctamente nombrada con una tabla llamada "tblName".Crear una tabla SQL de Excel VBA

¿Hay alguna manera de recoger el nombre en "tblName" o alguna forma de cambiar el nombre una vez que se crea con un nombre que el usuario ingresa?

Private Sub CreateDatabaseFromExcel() 

    Dim dbConnectStr As String 
    Dim Catalog As Object 
    Dim cnt As ADODB.Connection 
    Dim dbPath As String 
    Dim tblName As String 

    'Set database name in the Excel Sheet 
    dbPath = ActiveSheet.Range("B1").Value 'Database Name 
    tblName = ActiveSheet.Range("B2").Value 'Table Name 

    dbConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";" 

    'Create new database using name entered in Excel Cell ("B1") 
    Set Catalog = CreateObject("ADOX.Catalog") 
    Catalog.Create dbConnectStr 
    Set Catalog = Nothing 

    'Connect to database and insert a new table 
    Set cnt = New ADODB.Connection 
    With cnt 
     .Open dbConnectStr 
     .Execute "CREATE TABLE tblName ([BankName] text(50) WITH Compression, " & _ 
       "[RTNumber] text(9) WITH Compression, " & _ 
       "[AccountNumber] text(10) WITH Compression, " & _ 
       "[Address] text(150) WITH Compression, " & _ 
       "[City] text(50) WITH Compression, " & _ 
       "[ProvinceState] text(2) WITH Compression, " & _ 
       "[Postal] text(6) WITH Compression, " & _ 
       "[AccountAmount] decimal(6))" 
    End With 
    Set cnt = Nothing 

End Sub 
+0

gracias, funciona como un encanto. –

+0

Siempre contento de ayudar. Un conjunto diferente de ojos nunca duele. –

+4

¿No debería aceptarlo como "La" respuesta entonces? ;) – Oorang

Respuesta

12

cambiar esta línea:

.Execute "CREATE TABLE tblName ([BankName] text(50) WITH Compression, " & _ 

A esto:

.Execute "CREATE TABLE " & tblName & " ([BankName] text(50) WITH Compression, " & _