首页 > 解决方案 > 如何为宏编写 vb 来定义标题中带有动态日期的文件名?

问题描述

我正在尝试编写一个简单的子例程来刷新整个工作簿 - 我有命令的基本大纲:

Sub Workbook_RefreshAll()

    Workbooks("Sample.xls").RefreshAll

End Sub

但是,这将需要每天针对一个新文件运行,并且文件名每天都会更改......所以今天的文件名将是“FileName_20200820”,但明天它将是“FileName_20200821”......我该怎么写上面的 VB 以确保它在宏运行时刷新每天的文件?

标签: excelvba

解决方案


将此保存为模块,然后您可以将该模块导入需要刷新的任何工作簿。如果您尝试循环浏览目录中的所有文件,这将不起作用,这适用于单个工作簿。

Sub RefreshAll()

    Thisworkbook.RefreshAll

End Sub

如果你有需要单独刷新的数据透视表和查询,你可以使用这个:


Application.DisplayAlerts = False
Application.ScreenUpdating = False

Dim objList As ListObject
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    For Each objList In ws.ListObjects
        If objList.SourceType = 3 Then
            With objList.QueryTable
                .BackgroundQuery = False
                .Refresh
            End With
        End If
    Next objList
Next ws
 
Call UpdateAllPivots

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

Sub UpdateAllPivots()
Dim pt As PivotTable
Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.RefreshTable
        Next pt
    Next ws
    
End Sub

推荐阅读