2014-10-29 89 views
0

我想在Excel中使用VBA查询SQL数据库,并且我给出了下面的代码作为起点,这很棒,但我不知道编写连接字符串的语法和到目前为止一直无法找到它。希望你们能帮助我。如何编写连接字符串

Dim cn as new ADODB.Connection 
Dim rs as new ADODB.Recordset 

Cn.ConnectionString = “your connection string” 
Cn.Open 
Rs.Open “query like SELECT * FROM MYTABLE etc.”, cn 
Range(“A1”).CopyFromRecordset rs 

Rs.close 
Cn.close 
+2

如果你做一些谷歌上搜索我确定你会发现吨的例子 – Steve 2014-10-29 21:18:50

+1

[www.connectionstrings.com(http://www.connectionstrings.com/sql-server/)是一个良好的开端。就像这样:'cn.ConnectionString =“Provider = SQLOLEDB.1; Data Source = ServerName; Initial Catalog = databaseName; TRUSTED_CONNECTION = YES”' – 2014-10-29 21:20:10

+0

我一直在过去两周内一直在搜索Google,但还没有找到我需要的东西对我的大脑有意义。然而,波特兰亚军提供的是非常有用的谢谢先生。现在我只需要弄清楚它为什么会给我一个编译错误:第一行的用户定义类型未定义错误Dim – 2014-10-29 21:36:24

回答

1

此代码可以帮助你(这只是我手头上有接近你想要做什么,而不是你的一个重写),但你的连接字符串会根据您的数据库。有关字符串本身的语法的更多信息,请转至here。您正在收到编译错误,因为您没有正确的引用。在VBE中,转到工具并选择引用。确保选中ActiveX数据对象6.1库。

Private Sub GetFieldNames() 

Set con1 = New ADODB.Connection 
Set rs1 = New ADODB.Recordset 
Dim ProjectName As String 
Dim ConCat As String 

con1.ConnectionString = "Provider=SQLOLEDB;Data Source=SERVERADDRESS;Initial Catalog=DATABSE;IntegratedSecurity=SSPI" 
con1.Open 

With rs1 
    .ActiveConnection = con1 
    .Open "SELECT column_name,* From information_schema.columns Where table_name = 'Projects' ORDER by ordinal_position" 
    Sheet1.Range("A1").CopyFromRecordset rs1 

    .Close 

End With 


con1.Close 
Set con1 = Nothing 

End Sub 
+0

我能够修改代码并添加引用,正如您所建议的,以便在此过程中获得更多信息,但是现在我在尝试打开连接字符串时发现无效授权规范错误时遇到了不同的问题。 – 2014-10-29 22:22:54

+1

这可能与'IntegratedSecurity = SSPI'部分有关。你需要弄清楚你如何连接到SQL Server数据库。它是通过Windows身份验证还是SQL Server身份验证?然后你需要相应地改变你的连接字符串。关于连接字符串有很多信息。问一个具体的问题,我们可能会提供帮助。 – 2014-10-29 23:14:31

+0

我能够得到它的工作我不得不将密码添加到连接字符串(这是SQL Server身份验证)我只是不认为我需要的那部分,因为连接文件excel使用向导时做的不会在该文件中有它,我正在使用该文件来帮助编写代码。 – 2014-11-01 20:21:50