用于数据库连接的Excel VBA脚本

时间:2016-04-04 21:17:19

标签: sql-server excel vba excel-vba

我是VBA的新手,需要一些关于编写脚本的指针,该脚本打开从Excel文件到SQL Server数据库的连接。我在https://msdn.microsoft.com/en-us/library/office/gg264383.aspx引用了VBA语言参考,但无法找到有关如何完成此操作的信息。以下是我设法从我发现的一个宏启用的excel文件中抓取的内容:

Sub CopyData()
    Dim sSQL As String
    Dim rs As ADODB.Recordset
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[Server Name];Initial Catalog=[Catalog];"
    End With
End Sub

当我运行脚本时,我收到错误'用户定义的类型未定义'。并突出显示行Dim rs AS ADODB.Recordset。所以我的理解是ADODB.Recordset尚未定义为类......但我认为这是一个内置类?假设这不是内置类,我在源代码中找不到任何定义此类的位置。我的最终目标是基于对excel文件的输入运行SQL查询,并将查询结果输出到相邻列中。所以我的问题:

1)我在哪里可以找到有关数据库连接对象的Microsoft文档? 2)也许更多的SQL问题,但我应该如何格式化连接字符串?

1 个答案:

答案 0 :(得分:1)

Dim con As ADODB.Connection
Dim rec As ADODB.Recordset
Set con = New ADODB.Connection
Set rec = New ADODB.Recordset
rec.CursorLocation = adUseClient
con.Open ("Provider=SQLOLEDB;Data Source=ip;Initial Catalog=dbname;user ID=userid; password=password;")
Query = "SELECT unique_Id FROM data group by unique_Id;"
rec.Open Query, con
Do While rec.EOF() = False
    'do events
rec.MoveNext
Loop

添加Microsoft ActiveX Data Objects 2.8库作为参考