You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为实现日志记录需求,如何逐个刷新Excel数据连接?

单独刷新Excel数据连接并记录刷新时间的VBA实现

核心思路

遍历工作簿内的每个数据连接,逐个执行刷新操作,同时将每个连接的名称和刷新结束时间记录到指定工作表中,满足单独刷新+时间记录的需求。

具体VBA代码

Sub RefreshEachConnectionWithLog()
    Dim conn As WorkbookConnection
    Dim logSheet As Worksheet
    Dim lastRow As Long
    
    ' 指定用于记录日志的工作表,需提前创建并命名为"刷新日志"
    Set logSheet = ThisWorkbook.Worksheets("刷新日志")
    
    ' 首次运行时自动写入表头
    If logSheet.Range("A1").Value = "" Then
        logSheet.Range("A1").Value = "数据连接名称"
        logSheet.Range("B1").Value = "刷新结束时间"
    End If
    
    ' 逐个处理每个数据连接
    For Each conn In ThisWorkbook.Connections
        ' 设为同步刷新,确保刷新完成后再记录时间
        conn.OLEDBConnection.BackgroundQuery = False
        conn.Refresh
        
        ' 定位日志表的下一行空行
        lastRow = logSheet.Cells(logSheet.Rows.Count, "A").End(xlUp).Row + 1
        
        ' 写入连接名称和当前时间(即刷新结束时间)
        logSheet.Cells(lastRow, "A").Value = conn.Name
        logSheet.Cells(lastRow, "B").Value = Now()
    Next conn
    
    MsgBox "所有数据连接已单独刷新,日志记录完成!"
End Sub

关键注意事项

  • 同步刷新设置:必须将BackgroundQuery设为False,否则Excel会异步刷新连接,导致时间记录的是触发刷新的时间而非完成时间,失去记录意义。
  • 多连接类型兼容:如果你的数据连接是ODBC类型,只需把代码中的conn.OLEDBConnection替换为conn.ODBCConnection即可,逻辑保持不变。
  • 日志表准备:提前在工作簿里新建一张名为刷新日志的工作表,无需手动加表头,代码会自动处理首次运行的情况。

内容的提问来源于stack exchange,提问作者Max B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:35:00