2014-08-27 3 views
0

MDB 데이터베이스의 테이블을 Excel 워크 시트에로드하려면 아래 코드를 사용합니다. 변수로 테이블 이름을 정의하고 쿼리에 전달하려고하지만 아래 코드에서 오류가 발생합니다. VBA에서 어떻게해야합니까?VBA에서 SQL 쿼리에 테이블 이름을 전달하는 방법

Public Sub ReadMdb() 

    Dim cn As Object, rs As Object 
    Dim intColIndex As Integer 
    Dim DBFullName As String 
    Dim TargetRange As Range 

    DBFullName = Application.GetOpenFilename() 

    On Error GoTo Oops 

    Application.ScreenUpdating = False 

    Set TargetRange = Sheets("Sheet1").Range("A1") 

    Set cn = CreateObject("ADODB.Connection") 
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBFullName 
    Set rs = CreateObject("ADODB.Recordset") 

    Dim tableName As String 
    tableName = "Students" 

    rs.Open "SELECT * FROM tableName", cn, , , adCmdText 


    ' Write the field names 
    For intColIndex = 0 To rs.Fields.Count - 1 
    TargetRange.Offset(1, intColIndex).Value = rs.Fields(intColIndex).Name 
    Next 

    ' Write recordset 
    TargetRange.Offset(1, 0).CopyFromRecordset rs 

LetsContinue: 
    Application.ScreenUpdating = True 
    On Error Resume Next 
    rs.Close 
    Set rs = Nothing 
    cn.Close 
    Set cn = Nothing 
    On Error GoTo 0 
    Exit Sub 
Oops: 
    MsgBox "Error Description :" & Err.Description & vbCrLf & _ 
     "Error at line  :" & Erl & vbCrLf & _ 
     "Error Number  :" & Err.Number 
    Resume LetsContinue 


End Sub 

답변

6

당신은 SQL로 테이블 이름을 삽입 할 수 있습니다 : 당신의 반환 모든 행과 열을 모두 고려

rs.Open "SELECT * FROM [" & tableName & "]", cn, , , adCmdText 
+0

감사합니다. Mr.4DMonster. 너는 내 하루를 구했다. – Vahid

2

, 당신은 당신이 당신을 어떤 SQL을 단순히 필요가 없습니다 명령 형식 adCmdTable을 사용할 수 있습니다 원하는 테이블의 이름을 지정하십시오.

+0

감사합니다. 현재 문제는 당연합니다. – Vahid

관련 문제