前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA: 定时保存Excel文件

VBA: 定时保存Excel文件

作者头像
Exploring
发布2022-09-20 14:42:14
2.2K0
发布2022-09-20 14:42:14
举报
文章被收录于专栏:数据处理与编程实践

文章背景:有一份文件的数据更新比较频繁,而其他电脑需要随时查看该文件的最新数据,因此,需要经常保存该文件。

office365具有自动保存功能,当文件保存到 Microsoft 365 中的 Microsoft OneDrive 或 SharePoint 时,自动保存可用。

对于未开启自动保存功能的情况,下面介绍如何通过VBA代码,实现文件的定时保存。这里用到的VBA方法是Application.OnTime

(1) Application.OnTime 方法

安排一个过程在将来的特定时间运行(既可以是具体指定的某个时间,也可以是指定的一段时间之后)。

语法

表达式.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

  • EarliestTime 必选 Variant 希望此过程运行的时间。
  • Procedure 必选 String 要运行的过程名。
  • LatestTime 可选 Variant 过程开始运行的最晚时间。
  • Schedule 可选 Variant 如果为 True,则预定一个新的 OnTime 过程。如果为 False,则清除先前设置的过程。默认值为 True。

(2)代码实现

ThisWorkbook的代码框内,输入如下代码:

代码语言:javascript
复制
Option Explicit

Private Sub Workbook_Open()

    my_SaveTime = Now + TimeValue("00:10:00")

    On Error Resume Next
    Application.OnTime my_SaveTime, "Save1"
    
    On Error GoTo 0
    
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    On Error Resume Next
    Application.OnTime my_SaveTime, "Save1", , False
    
    On Error GoTo 0
 
End Sub

模块1的代码框内,输入如下代码:

代码语言:javascript
复制
Option Explicit
Public my_SaveTime As Date

Sub Save1()

    Application.DisplayAlerts = False
    
    ThisWorkbook.Save
    
    Application.DisplayAlerts = True
    
    my_SaveTime = Now + TimeValue("00:10:00")
    
    On Error Resume Next
    
    Application.OnTime my_SaveTime, "Save1"
    
    On Error GoTo 0
    
End Sub

以上代码要实现的功能是:打开工作簿时,开始定时保存,每10分钟自动保存一次文件。当关闭工作簿后,停止定时保存。

注意事项:关闭工作簿后,一定要解除OnTime程序(参见Workbook_BeforeClose的相应代码)。否则,即使关闭了工作簿,工作簿稍后也会被自动打开。

视频演示:http://mpvideo.qpic.cn/0bc37uacqaaammahhpuw2zqvb7odfd6qakaa.f10002.mp4?dis_k=1935eda0ec7649c2fb928a55e2d1531b&dis_t=1663656109&vid=wxv_2141637376266371073&format_id=10002&support_redirect=0&mmversion=false

参考资料:

[1] 如何启用“自动保存”(https://support.microsoft.com/zh-cn/office/%E5%A6%82%E4%BD%95%E5%90%AF%E7%94%A8-%E8%87%AA%E5%8A%A8%E4%BF%9D%E5%AD%98-dbd19b49-ff3a-48f5-8294-671e33a6712c)

[2] 我使用了OnTime函数 关闭文件后总是自动打开,求解决方案(https://club.excelhome.net/forum.php?mod=viewthread&tid=1547153&extra=page%3D1&page=1&)

[3] Application.ontime的用法,留着自己看(https://club.excelhome.net/thread-848141-1-1.html)

[4] Application.OnTime method(https://docs.microsoft.com/en-us/office/vba/api/excel.application.ontime)

[5] How to save an Excel file every, say one minute?(https://stackoverflow.com/questions/46524488/how-to-save-an-excel-file-every-say-one-minute)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档