Excel / VBA / SQL – 刷新不起作用
我已经创build了一个VBA脚本来更新SQL连接的CommandText,以便将一个参数从Excel传递到一个存储过程 – 除了查询本身没有更新以外,这个工作正常。
Private Sub CommandButton1_Click() Dim BillDate As Date Dim BillDateFormat As String BillDate = Sheets("Sheet1").Range("B4").Value BillDateFormat = Format(BillDate, "yyyy-mm-dd") With ActiveWorkbook.Connections("BillDateConnection").OLEDBConnection .CommandText = "EXEC TTKWBillingTest @BillDate = '" & BillDateFormat & "'" End With ActiveWorkbook.Connections("BillDateConnection").Refresh End Sub
我发现数据只刷新第一次刷新和后续刷新更新CommandText但工作表上的数据不会刷新。
我试过添加..
ActiveWorkbook.RefreshAll
但这并没有什么区别。
有任何想法吗?
将代码放在ThieWorkbook对象中,以便在Excel打开时触发
Private Sub Workbook_open() For Each objConnection In ThisWorkbook.Connections 'Get current background-refresh value bBackground = objConnection.OLEDBConnection.BackgroundQuery 'Temporarily disable background-refresh objConnection.OLEDBConnection.BackgroundQuery = False objConnection.Refresh 'Refresh this connection 'Set background-refresh value back to original value objConnection.OLEDBConnection.BackgroundQuery = bBackground Next End sub
NB如果数据连接设置为打开更新,则会导致问题! 最好从连接pipe理器中删除这个选项!
通过button更新:
Private Sub Cmd_RefreshData_Click() Application.Run "'" & ThisWorkbook.Name & "'!ThisWorkbook.Workbook_Open" ActiveWorkbook.RefreshAll Lbl_LastRefresh_Click End Sub
Lbl_LastRefresh使用Now()显示上次刷新时间
…我明白了这一点。
“启用后台刷新”需要在连接属性中取消select。
每次没有此选项时,表格都会刷新。