2012-05-31 159 views
0

我是Excel VBA的初學者。我想從Teradata數據庫查詢數據,並將輸出結果輸入到Excel表格的行中。當我寫了下面的代碼:通過Excel查詢數據庫VBA

Private Sub CommandButton1_Click() 
    Dim conn As Connection 
    Dim rec1 As Recordset 
    Dim thisSql As String 
    Set conn = New Connection 
    conn.Open "Driver=Teradata; DBCName=" & DBCName & ";UID=" & UID & ";PWD=" & PWD 
    thisSql = "simple select qyery here" 
    With .QueryTables.Add(Connection:=conn, Destination:=.Range("A1")) 
     .Sql = thisSql 
     .Name = "data" 
     .FieldNames = True 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 

我收到錯誤說「編譯器錯誤:用戶定義類型沒有定義」

如何克服這個問題?我是否需要在代碼中包含任何內容?

請幫

我使用MSVisualBasic 6.5編輯

+0

它會告訴您哪一行? – lins314159

+0

在線顯示錯誤:昏暗conn作爲連接 – SrinivasR

回答

4

您好我想用QueryTables.Add當它需要一個記錄作爲連接對象。 我修改了您的代碼並嘗試如下:

Dim conn As adodb.Connection 
Dim rec1 As adodb.Recordset 
Dim thisSql As String 

Set conn = New adodb.Connection 

conn.Open your_connection_string 

thisSql = "your query here" 

Set rec1 = New adodb.Recordset 
rec1.Open thisSql, conn 

With Sheet3.QueryTables.Add(Connection:=rec1, Destination:=Sheet3.Range("A1")) 
    .Name = "data" 
    .FieldNames = True 
    .Refresh BackgroundQuery:=False 
End With 
+0

嗨吉姆...感謝您的答覆...我已經改變了代碼...但即時通訊仍然面臨着同樣的錯誤..我的代碼不識別'連接'作爲關鍵字...我感覺 – SrinivasR

+3

奇怪〜你有沒有檢查你的項目上的Microsoft ActiveX數據對象庫的參考?我測試了上面的代碼併成功了。 –

+0

謝謝Jim .. tat建議幫助。我已經檢查了項目參考中的ActiveX lib。 我在這裏有一個問題:其實我第一次嘗試檢查activeX,我無法看到它。然後我打開其他VBAProject,我知道和工作正常(與數據庫),它有ActiveX檢查..然後我是能夠檢查我的項目的ActiveX參考也。 – SrinivasR

相關問題