我是新手,但每当我遇到 Excel 问题时,我都会查看这个网站,到目前为止,你们总是能帮助我!现在我遇到了 VBA 问题:我想通过宏“调用”SQL 查询,因此基本上就是将查询中的数据复制粘贴到我的活动工作表中。
我尝试使用在这个网站上找到的以下查询(我不确定哪个是线程,因为在自己提问之前我检查了很多):
Sub sql()
'Initializes variables
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String
'Setup the connection string for accessing MS SQL database
'Make sure to change:
'1: PASSWORD
'2: USERNAME
'3: REMOTE_IP_ADDRESS
'4: DATABASE
ConnectionString = connString = "Driver={"mydriver"};Server="myserver";Database="mydatabase";UID="Myuserid";PWD="mypwd";Port=PortNum;SSL=true;Sslmode=Require"
'Opens connection to the database
cnn.Open ConnectionString
'Timeout error in seconds for executing the entire query; this will run for 15 minutes before VBA timesout, but your database might timeout before this value
cnn.CommandTimeout = 900
'This is your actual MS SQL query that you need to run; you should check this query first using a more robust SQL editor (such as HeidiSQL) to ensure your query is valid
StrQuery = "Select * from YYY.XXXX where date >='2020-03-01'"
'Performs the actual query
rst.Open StrQuery, cnn
'Dumps all the results from the StrQuery into cell A2 of the first sheet in the active workbook
Sheets(1).Range("A2").CopyFromRecordset rst
End Sub
这是我收到的错误: 运行时错误
我尝试在谷歌上搜索该错误,发现我的 system32 中应该有该服务器;我检查了“计算机管理”,但那里没有任何与 SQL 相关的内容。
你有什么建议吗?
如果有另一个关于同一问题的帖子,我提前表示歉意,但到目前为止我找不到任何解决办法。
编辑:我没有包含表、用户 ID 和密码,因为这些是敏感数据,我不能在线共享;但是,我的问题在于驱动程序、服务器和数据库;我不确定要在那里输入什么。另外,我应该将查询的 URL 放在哪里(jdbc:...)?
我通常使用 SQL 工作台来获取数据,然后每周将其复制粘贴到工作表中;这正是我希望宏能做的事情。如果我在编辑之前没有正确解释这一切,请见谅。