2009-05-29 5 views
5

Проблема заключается в том, что я не могу получить имя таблицы, которое было введено в переменную «tblName», которая будет использоваться вместо этого. Я получаю правильно названную базу данных с таблицей с именем «tblName».Создать таблицу SQL из Excel VBA

Есть ли способ поднять имя в «tblName» или каким-либо образом изменить имя после его создания с именем, которое вводит пользователь?

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

Спасибо, это работает как шарм. – 2009-05-29 18:20:56

+0

Всегда рад помочь. Другой набор глаз никогда не болит. –

+4

Разве вы не принимаете это как «The» тогда? ;) – Oorang

ответ

12

Изменить эту строку:

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

Для этого:

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