mysql - Excel VBA 到 SQL 数据库

标签 mysql sql-server vba excel

我刚刚开始研究通过 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/

相关文章:

Mysql存储过程返回一些奇怪的结果

mysql - Android Studio 是否有任何 Sqlite 扩展?

excel - 我可以将 Excel 加载项中的函数分配给工作簿中的按钮吗?

excel - 修改类 AllowEditRanges 中的范围

mysql - 如何添加多个外键?

mysql - 从两个表中选择并计算第三个

java - setMaxResult 无法在带有 Hibernate 的 MSSQL Server 2014 中工作

excel - 从左到右对多行进行排序

SQL - 特定分组依据

c# - 使用 Entity Framework Code First 将 SQL 表主键定义为区分大小写