excel - 如何为宏编写 vb 来定义标题中带有动态日期的文件名?
问题描述
我正在尝试编写一个简单的子例程来刷新整个工作簿 - 我有命令的基本大纲:
Sub Workbook_RefreshAll()
Workbooks("Sample.xls").RefreshAll
End Sub
但是,这将需要每天针对一个新文件运行,并且文件名每天都会更改......所以今天的文件名将是“FileName_20200820”,但明天它将是“FileName_20200821”......我该怎么写上面的 VB 以确保它在宏运行时刷新每天的文件?
解决方案
将此保存为模块,然后您可以将该模块导入需要刷新的任何工作簿。如果您尝试循环浏览目录中的所有文件,这将不起作用,这适用于单个工作簿。
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
推荐阅读
- swiftui - 使用 SwiftUI 时异步填充/预填充多个用户可变的“@State”值?
- reactjs - 在 ReactJS 组件中,当循环遍历 props 数组时,我只能使用循环的简写语法。为什么是这样?
- sql - 尝试通过记录表打印
- java - Jackson多态反序列化
- azure-devops - 在我的 Angular 2+ 源代码中从 MS DevOps 更新新 PAS 令牌的位置?
- java - 如何在 Spring Boot Tests 中设置 servlet 上下文路径?
- notepad++ - 在行的某个点处的两个反斜杠之间替换每行中的文本
- django - 我可以用 Django 渲染 VueJS 吗?
- python - PIP 未安装在 Windows 10 和 python 3.7.3 上
- r - 添加到列表后的模型摘要