【问题标题】:Excel/VBA/SQL - refresh not workingExcel/VBA/SQL - 刷新不起作用
【发布时间】:2016-06-23 11:02:54
【问题描述】:

我创建了一个 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

但这没有任何区别。

有什么想法吗?

【问题讨论】:

    标签: sql-server vba excel


    【解决方案1】:

    将代码放入 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 如果数据连接设置为打开时更新,这可能会导致问题!最好从连接管理器中删除此选项!

    通过按钮更新:

    Private Sub Cmd_RefreshData_Click()
        Application.Run "'" & ThisWorkbook.Name & "'!ThisWorkbook.Workbook_Open"
        ActiveWorkbook.RefreshAll
        Lbl_LastRefresh_Click
    End Sub
    

    Lbl_LastRefresh 使用 Now() 显示上次刷新时间

    【讨论】:

    • 这需要从命令按钮更新,因为它会在工作簿打开时使用多次。
    • 优秀!你救了我!
    【解决方案2】:

    ...我想通了。

    需要在连接属性中取消选择“启用后台刷新”。

    如果没有这个选项,表格每次都会刷新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      相关资源
      最近更新 更多