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。

每次没有此选项时,表格都会刷新。