Database 利用excelvba查询数据库

Database 利用excelvba查询数据库,database,excel,teradata,vba,Database,Excel,Teradata,Vba,我是Excel VBA的初学者。我想从Teradata数据库中查询数据,并将输出放入excel工作表的行中。当我编写以下代码时: 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="

我是Excel VBA的初学者。我想从Teradata数据库中查询数据,并将输出放入excel工作表的行中。当我编写以下代码时:

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编辑器

您好,我想在使用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

嗨,我想当使用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

显示线路错误:Dim conn As CONNECTION显示线路错误:Dim conn As CONNECTION HI Jim。。。谢谢你的回复。。。我已经更改了代码…但我仍然面临相同的错误。。我的代码没有将“连接”标识为关键字。。。I feelStrange~您是否检查了项目中对Microsoft ActiveX数据对象库的引用?我测试了上面的代码并成功了。谢谢你,吉姆。。这个建议有帮助。我已经检查了项目参考中的ActiveX库。我这里有一个问题:事实上,我第一次尝试检查activeX,我看不到它。然后我打开了另一个VBA项目,我知道它工作正常(与数据库一起),它正在检查activeX。然后我也可以检查我的项目的activeX引用。这是上面评论的继续:所以,如果我取消选中prjct的ActiveX库并希望再次检查它,则我无法在引用中看到ActiveX库。在这种情况下,我需要打开其他项目,然后在我的项目中检查ActiveX引用,我正在保存它。如果参考文献的亮框中没有参考文献,那么有关于如何包含参考文献的帮助吗?事先检查库称为“早期绑定”。打开“引用”对话框时,它会在顶部显示选中的LIB。我想你可能很难找到合适的lib。除了早期绑定,还有后期绑定。您应该使用CreateObject函数进行后期绑定。欲知更多信息,请谷歌它,你可以在网上找到吨的网页。嗨吉姆。。。谢谢你的回复。。。我已经更改了代码…但我仍然面临相同的错误。。我的代码没有将“连接”标识为关键字。。。I feelStrange~您是否检查了项目中对Microsoft ActiveX数据对象库的引用?我测试了上面的代码并成功了。谢谢你,吉姆。。这个建议有帮助。我已经检查了项目参考中的ActiveX库。我这里有一个问题:事实上,我第一次尝试检查activeX,我看不到它。然后我打开了另一个VBA项目,我知道它工作正常(与数据库一起),它正在检查activeX。然后我也可以检查我的项目的activeX引用。这是上面评论的继续:所以,如果我取消选中prjct的ActiveX库并希望再次检查它,则我无法在引用中看到ActiveX库。在这种情况下,我需要打开其他项目,然后在我的项目中检查ActiveX引用,我正在保存它。如果参考文献的亮框中没有参考文献,那么有关于如何包含参考文献的帮助吗?事先检查库称为“早期绑定”。打开“引用”对话框时,它会在顶部显示选中的LIB。我想你可能很难找到合适的lib。除了早期绑定,还有后期绑定。您应该使用CreateObject函数进行后期绑定。欲知更多信息,请谷歌它,你可以在网上找到吨的网页。