【发布时间】:2013-11-21 06:46:09
【问题描述】:
我有一个 Excel 文档,其中包含一个宏,在运行时将修改该连接的 CommandText 以从 Excel 电子表格中传递参数,如下所示:
Sub RefreshData()
ActiveWorkbook.Connections("Job_Cost_Code_Transaction_Summary")
.OLEDBConnection.CommandText = "Job_Cost_Code_Transaction_Summary_Percentage_Pending @monthEndDate='" & Worksheets("Cost to Complete").Range("MonthEndDate").Value & "', @job ='" & Worksheets("Cost to Complete").Range("Job").Value & "'"
ActiveWorkbook.Connections("Job_Cost_Code_Transaction_Summary").Refresh
End Sub
我希望刷新不仅可以修改连接命令,还可以修改连接,因为我还想将它与不同的数据库一起使用:
就像宏用电子表格中的值替换命令参数一样,我希望它也用电子表格中的值替换数据库服务器名称和数据库名称。
不需要完整的实现,只需修改与工作表中的值的连接的代码就足够了,我应该可以从那里开始工作。
我试图做这样的事情:
ActiveWorkbook
.Connections("Job_Cost_Code_Transaction_Summary")
.OLEDBConnection.Connection = "new connection string"
但这不起作用。谢谢。
【问题讨论】:
-
你需要看到Connection Strings并学习如何使用ADODB
-
你有没有找到解决这个问题的方法?如果是这样,我将非常感谢您与我们分享。
-
不幸的是,当前仍在手动编辑连接字符串。
-
顺便说一句,属性是连接而不是连接字符串:
ActiveWorkbook.Connections("Job_Cost_Code_Transaction_Summary").OLEDBConnection.Connection = "new connection string" -
任何导致错误的想法:
ActiveWorkbook.Connections("Job_Cost_Code_Transaction_Summary").OLEDBConnection.Connection = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=ADCData_Doric;Data Source=doric-server5;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=LHOLDER-VM;Use Encryption for Data=False;Tag with column collation when possible=False"