2009-05-29 160 views
5

Vấn đề là tôi không thể lấy tên bảng đã được nhập vào biến, "tblName", được sử dụng thay vào đó tôi nhận được một cơ sở dữ liệu được đặt tên đúng với một bảng có tên "tblName".Tạo một bảng SQL từ Excel VBA

Có cách nào để nhận tên trong "tblName" hoặc một cách nào đó để thay đổi tên khi nó được tạo bằng tên người dùng thứ vào không?

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

cảm ơn, nó hoạt động như một nét duyên dáng. –

+0

Luôn sẵn lòng trợ giúp. Một bộ mắt khác không bao giờ đau. –

+4

Bạn có nên chấp nhận câu trả lời là "Câu trả lời" không? ;) – Oorang

Trả lời

12

Thay đổi dòng này:

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

Để này:

.Execute "CREATE TABLE " & tblName & " ([BankName] text(50) WITH Compression, " & _ 
Các vấn đề liên quan