我刚刚开始研究通过 Excel VBA 与 SQL 数据库进行交互,我从 MSDN 中的基本连接代码开始:
Sub GetDataFromADO()
'Declare variables'
Set objMyConn = New ADODB.Connection
Set objMyRecordset = New ADODB.Recordset
Dim strSQL As String
'Open Connection'
objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=fatcoin;User ID=root;Password=root;"
objMyConn.Open
'Set and Excecute SQL Command'
strSQL = "select * from productlist"
'Open Recordset'
Set objMyRecordset.ActiveConnection = objMyConn
objMyRecordset.Open strSQL
'Copy Data to Excel'
ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset)
End Sub
我遇到的问题是,当我的计算机上的端口 3306 上运行一个 SQL 实例(我可以使用 HeidiSQL 等方式访问该实例)时,每次运行此代码时都会收到一条错误消息:
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied
我也尝试过添加端口:
objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost,3306;Initial Catalog=fatcoin;User ID=root;Password=root;"
还有其他类似的事情。我看不出有什么理由它不起作用,但我根本没有玩过这么多。我尝试搜索其他线程但无济于事。
有什么想法吗? 我正在 64 位机器上使用 Excel 2010,使用 MySQL 5.7 我应该提到上面的编码被输入到 Excel 上 VBAProject 的“Module1”部分。 谢谢
最佳答案
感谢您的回答。 我通过一个有用的链接解决了我自己的问题,我发现该链接建议我进入 ODBC 32 位(因为 Excel 是 32 位)并创建系统 DSN。然后,我使用了下面的连接字符串:
objMyConn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=localhost;Initial Catalog=fatcoin"
这很有效。
关于mysql - Excel VBA 到 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194330/