我需要从数据库(Microsoft Windows Server 2012、SQL Server 2012)下载一些数据到Excel(Windows 11、Office 2016)。如果它是一次性数据转储,我只需使用数据 -> 获取数据 -> 从数据库并使用生成的工作表。但是最终用户每次都需要向查询传递不同的参数,我不想让任何非 IT 人员因为必须查看和修改 SQL 查询而感到困惑。所以,我尝试了 VBA。计划是从输入单元中获取一些参数。
ODBC 数据源管理员显示已为 SQL 服务器安装了以下驱动程序:Microsoft Access dBase Driver、Microsoft Access Driver、Microsoft Access Text Driver、Microsoft Excel Driver、SQL Server、SQL Server Native Client 10.0 和 11.0。
在Excel中,我成功添加了Microsoft ActiveX Data Objects 6.1 Library。连接数据类型可用且不会引发类型错误。
我的子例程,连接字符串中有虚拟数据:
Sub Compute()
Dim ConnectionString As String
ConnectionString = "Server=00.00.00.00;Database=MyDatabase;User ID=MyName;Password=MyPassword"
Dim Connection As ADODB.Connection `Also tried Connection without ADODB.
Set Connection = New Connection
Connection.Open ConnectionString
End Sub
我收到“未找到数据源名称且未指定默认驱动程序”。来自 ODBC 驱动程序管理器的错误。
VBA 是适合我需要做的事情的正确工具吗?或者是否有更好的方法可以方便地使用新参数重新运行查询并重新填充结果单元格而不让最终用户接触任何 SQL?
我该如何解决这个错误?一些额外的 SQL 服务器驱动程序?一个不同的 VBA 库?不同的连接字符串?以上所有?