我需要创建一个excel宏,人们可以在SQL服务器的存储过程中放入他们的参数。有一个错误的地方在第13行,但我不确定它是什么,因为我是非常新的Visual Basic。
任何帮助都将是非常感激的。
Private Sub CommandButton1_Click()
Dim TransTime As Date 'Declare the SellStartDate as Date
Dim StoreNumber As Integer 'Declare the SellEndDate as Date
Dim Product As Integer 'Declare the SellEndDate as Date
TransTime = Sheets("Sheet1").Range("B4").Value 'Pass value from cell B3 to SellStartDate variable
StoreNumber = Sheets("Sheet1").Range("B5").Value 'Pass value from cell B4 to SellEndDate variable
Product = Sheets("Sheet1").Range("B6").Value 'Pass value from cell B4 to SellEndDate variable
'Pass the Parameters values to the Stored Procedure used in the Data Connection
With ActiveWorkbook.Connections("nitro_price_check").ODBCConnection
CommandText = "EXEC maverik.nitro_price_check '" & TransTime & "','" & StoreNumber & "'" & Product & "'"
ActiveWorkbook.Connections("nitro_price_check").Refresh
End With
End Sub
如前所述,考虑Excel工作簿连接支持的参数化,但初始设置需要通过Excel的用户界面。在Microsoft query中创建参数查询,请参见MSDN文档。
在设置过程中,请确保在SQL命令(即命令文本)中包含qmarks:
EXEC maverik.nitro_price_check ?, ?, ?
这将在连接属性的定义选项卡下启用Parameters...
按钮,在那里您可以通过相应的位置为每个qmark占位符分配Excel单元格值:
- 参数…
- 参数1
=Sheet1!B4
- 参数2
=Sheet1!B5
- 参数3
=Sheet1!B6
- 参数1
那么你的VBA只是一个简单的刷新行,没有杂乱的连接或引用SQL:
Private Sub CommandButton1_Click()
ActiveWorkbook.Connections("nitro_price_check").Refresh
End Sub