备份文件关闭Excel VBA

2024-04-12

我希望 Excel 在文件关闭时自动备份工作簿,而不提示用户。我在网上找到了下面的优秀代码(忘记源代码),但备份文件类型正在更改为我无法打开的 BAK 文件。 我该如何解决这个问题。两个文件将位于同一文件夹中,备份应具有相同的文件名和“-bak”或“.bak”。

Sub SaveWorkbookBackup()

Dim awb As Workbook, BackupFileName As String, i As Integer, OK As Boolean
    If TypeName(ActiveWorkbook) = "Nothing" Then Exit Sub
    Set awb = ActiveWorkbook
    If awb.Path = "" Then
        Application.Dialogs(xlDialogSaveAs).Show
    Else
        BackupFileName = awb.FullName
        i = 0
        While InStr(i + 1, BackupFileName, ".") > 0
            i = InStr(i + 1, BackupFileName, ".")
        Wend
        If i > 0 Then BackupFileName = Left(BackupFileName, i - 1)
        BackupFileName = BackupFileName & ".bak"
        OK = False
        On Error GoTo NotAbleToSave
        With awb
            Application.StatusBar = "Saving this workbook..."
            .Save
            Application.StatusBar = "Saving this workbook backup..."
            .SaveCopyAs BackupFileName
            OK = True
        End With
    End If
NotAbleToSave:
    Set awb = Nothing
    Application.StatusBar = False
    If Not OK Then
        MsgBox "Backup Copy Not Saved!", vbExclamation, ThisWorkbook.Name
    End If
End Sub

下面修改后的函数应保存包含保存日期时间的备份,而不是“.BAK”。修改的部分已注释。另外,正确缩进的帖子也有很大帮助;)

Sub SaveWorkbookBackup()

Dim awb As Workbook, BackupFileName As String, i As Integer, OK As Boolean
If TypeName(ActiveWorkbook) = "Nothing" Then
Exit Sub

Set awb = ActiveWorkbook

If awb.Path = "" Then
    Application.Dialogs(xlDialogSaveAs).Show
Else: BackupFileName = awb.FullName
i = 0
While InStr(i + 1, BackupFileName, ".") > 0
    i = InStr(i + 1, BackupFileName, ".")
Wend
If i > 0 Then
BackupFileName = Left(BackupFileName, i - 1)

'Modified this part
If Application.Version >= 12 Then 
    BackupFileName = BackupFileName & "_backup_" & Format(Date, "yyyymmdd") & "-" & Format(Time, "Hhmm") & ".xlsx"
Else
    BackupFileName = BackupFileName & "_backup_" & Format(Date, "yyyymmdd") & "-" & Format(Time, "Hhmm") & ".xls"
End If
OK = False
On Error GoTo NotAbleToSave
With awb
    Application.StatusBar = "Saving this workbook..."
    .Save
    Application.StatusBar = "Saving this workbook backup..."
    .SaveCopyAs BackupFileName
    OK = True
End With
End If

NotAbleToSave:     Set awb = Nothing
    Application.StatusBar = False
    If Not OK Then
        MsgBox "Backup Copy Not Saved!", vbExclamation, ThisWorkbook.Name
    End If
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

备份文件关闭Excel VBA 的相关文章

  • Excel 工作表到 iPhone 数据 -- A 点到 B 点

    尽可能简单 我有一个非常简单的 Excel 电子表格 只有 1000 多条记录 我想将其用作 iPhone 应用程序的静态数据源 最好的进攻计划是什么 我心中的可能性 1 直接读取XLS作为数据源 是否有Obj C库用于此 2 将XLS 转
  • MS Access 中的舍入

    VBA Access 中舍入的最佳方法是什么 我目前的方法是利用Excel方法 Excel WorksheetFunction Round 但我正在寻找一种不依赖Excel的方法 请注意 VBA Round 函数使用 Banker 舍入 将
  • 将包含换行符的文本文件导入到 Excel 中

    我有一个纯文本文件 如下所示 some text containing line breaks 我正在尝试说话excel 2004 Mac v 11 5 正确打开此文件 我希望只看到一个单元格 A1 包含上述所有内容 不带引号 但可惜的是
  • 选择在 Excel 宏(VBA 中的范围对象)中具有值的列

    如何修改 VBA 中的这一行以仅选择具有值的列 Set rng Range A1 Range A65536 End xlUp SpecialCells xlCellTypeVisible 我不认为我做的事情是正确的CountLarge财产是
  • 在 VBA 中按键对字典进行排序

    我使用 VBA 创建了一个字典CreateObject Scripting Dictionary 将源单词映射到要在某些文本中替换的目标单词 这实际上是为了混淆 不幸的是 当我按照下面的代码进行实际替换时 它将按照源单词添加到字典中的顺序替
  • 我需要代码在两行之间复制并粘贴到另一张表中,并给出任何值?

    例如 我有 50 行数据 第一行有学生的名字 我需要代码将数据从 RAM 复制到 RAMESH 在这之间我有 20 行 我需要代码来复制行并将其粘贴到另一张纸中 它不应该问我名字 默认情况下 它必须采用 RAM 和 RAMESH 名称 好的
  • 使用 VBA 通过简单命令从非连续范围的并集获取值到数组中(无循环)

    我有以下任务 表面上很简单 使用 VBA 将电子表格上多个列的值复制到二维数组中 为了让生活更有趣 这些柱子并不相邻 但它们的长度都相同 显然 可以通过依次循环每个元素来做到这一点 但这看起来非常不优雅 我希望有一个更紧凑的解决方案 但我很
  • For...VBA 中的下一个循环超出限制

    我正在使用一个For Next循环填充数组 如下所示 ReDim array 1 to 100 1 to 100 For i 1 to 100 Next i But the i计数器似乎总是转到 101 而不是停止在 100 因此 这会在我
  • 将表行从 Word 文档复制到现有文档表特定单元格

    我正在寻找一个宏 它将内容从一个 Word 文档中的表格复制到另一个现有 Word 文档中的表格到特定单元格中 从第 5 行开始 复制后面的所有行并将其粘贴到现有文档中的第 5 行 这可能吗 在此输入图像描述 https i stack i
  • 如何使用 Excel Interop 获取筛选行的范围?

    我正在为我的项目使用 Excel Interop 程序集 如果我想使用自动过滤器 那么可以使用 sheet UsedRange AutoFilter 1 SheetNames 1 Microsoft Office Interop Excel
  • Excel VBA 导出到文本文件。需要删除空行

    我有一个工作簿 使用以下脚本将其导出到文本文件 它工作正常 但是当我打开文本文件时 末尾总是有一个空行 这导致我在生成此文本文件后运行的另一个脚本出现问题 有关如何从导出中删除空行的任何帮助 Code Sub Rectangle1 Clic
  • Excel VBA 过滤和复制粘贴数据

    给定一个数据集 假设有 10 列 在 A 列中我有日期 在 B 列中我有 我想仅过滤 A 列 2014 年的数据 B 列 ActiveSheet Range A 1 AR 1617 AutoFilter Field 5 Operator x
  • Confluence:使用 VBA 更新现有页面

    我尝试使用 VBA 更新 Confluence 页面 我的想法是使用REST API加载页面内容 修改内容然后上传修改后的版本 这是我的代码 Private Sub TestRESTApi Dim uname As String uname
  • laravel中过滤后如何导出excel?

    我想仅导出视图刀片中过滤的数据 我正在使用 Laravel 7 和 maatwebsite excel 3 1 和 PHP 7 4 2 我浏览了文档并应用了这个 View a href class btn btn success i cla
  • 证明 Excel VBA Scripting.Dictionary 不保留项目插入顺序

    我正在尝试决定是否为我的项目使用 Excel VBA 集合或字典 出于多种原因 我倾向于字典 但在使用字典时我会继续阅读它For Each循环检索字典项目或从字典 Items 数组读取项目时 检索顺序可能不是添加项目的顺序 这对于我的应用程
  • 如何在 Azure 逻辑应用中解析 Excel 电子表格

    我需要使用 Azure 逻辑应用从 Excel 电子表格中解析和提取列信息 我已经为我的逻辑应用程序设置了从 Outlook 检索最新未读电子邮件的功能 此外 我的逻辑应用程序执行 FOR EACH 来读取所有附件 来自未读电子邮件 并确保
  • Outlook 无法识别一个或多个姓名

    我有以下 vba 代码 它读取邮箱并向任何发送无效代码作为邮箱回复的用户发送回复 但有时会收到运行时错误 Outlook 无法识别一个或多个名称 我的问题是 创建新的 MAPI 配置文件是否可以解决该问题 或者我是否需要添加一个代码来解析地
  • 在Google电子表格中划分整列

    我是 Google 电子表格的一个相对较新的用户 我希望 B 列中的每个单元格都是 A 列 同一行 中内容除以 5 的结果 B1 B2 B3 等 商 应为 A1 A2 A3 等 被除数 除以 5 除数 在示例中 B1 A1 5 我知道一项一
  • 在 VBA Excel 中查找、剪切和插入行以匹配借项和贷项值

    我在 Sheet1 中有以下设置数据 并从第 4 行 A 列开始 其中标题位于第 3 行 No Date Code Name Remarks D e b i t Cr e d i t 1 4 30 2015 004 AB 01 04 15
  • Excels COUNTIFS 函数中的数组作为条件,混合 AND 和 OR [重复]

    这个问题在这里已经有答案了 我已经在谷歌上搜索了一段时间 但似乎无法让它发挥作用 我使用 Excel 2010 希望混合使用 AND 和 OR 运算符来计算行数 我想做的是这样的 COUNTIFS A A string1 B B strin

随机推荐

  • 如何读取在 gradle 执行中较早更新的属性文件中的最新属性

    对于我的 Android 项目 我配置了 defaultConfig 以便它从 gradle properties 中的版本属性获取生成的 apk 中 AndroidManifest xml 的 versionName 这很好用 这是 bu
  • 谷歌图片搜索是如何实现的?

    我只需拖放谷歌中的任何图像即可获得结果 它是如何实施的 该算法背后的想法是什么 该图像数据是否转换为任何内容以供搜索或 不知道 令人惊讶的是 我们还可以使用Google来回答这个问题 Google 按图像搜索使用的算法是什么 http ww
  • 在 ghci 中跟踪历史

    历史管理在 GHCI 或其他基于 Haskell 的 REPL 中如何工作 由于 Haskell 是一种纯语言 我猜它是使用 monad 实现的 也许是状态单子 http learnyouahaskell com for a few mon
  • 使用 apt-get install nginx 后重新编译 nginx

    我最初是通过 apt get install 安装 nginx 的 它工作得很好 现在 我想安装一些第 3 方模块 并且必须重新编译 nginx 所以我尝试重新编译 它只是走过场 然后我意识到我的原始版本仍然是正在使用的版本 我是否需要先卸
  • Python ImportError:无法在 virtualenv 中导入名称“_imagingtk”

    我想开始使用枕头 但遇到了一些问题 起初 我以为我可以简单地pip install pillow 所以我激活了我的 virtualenv 并做到了这一点 当它不起作用时 我意识到我需要为枕头安装一些依赖项 安装 http pillow re
  • R - 在城市地图上安装网格并将数据输入到网格方块中

    我试图在圣何塞上放置一个网格 如下所示 圣何塞网格 https i stack imgur com U8RxX png 您可以使用以下代码直观地制作网格 ca cities tigris places state CA using tigr
  • 使用 terraform 为现有虚拟机启用 Azure Monitor

    我正在尝试为现有虚拟机启用 azure 监视器功能 该功能使用 terraform 检查虚拟机的运行状况和性能 但我无法找到相应的文档 你能帮我做同样的事情吗 因为我想要对天蓝色进行详细的监控 要在现有虚拟机上启用 VMinsights 您
  • 我们如何将 JWT 令牌存储在 Http only cookie 中?

    我正在创建登录模块 用户将输入用户名和密码 如果用户验证成功 服务器将返回 JWT 令牌 我将使用 JWT 令牌来验证 React js 中的不同 API 调用 现在我担心的是 我发现了一些与此相关的文章 然后我发现我们可以使用仅 http
  • 从数据列(字符串)中提取字符前后的元素

    我想提取字符串中某些字符之前和之后的字符 其中大部分位于 pandas 数据帧列中 基本上我想从我的主要数据帧中获取并合并在一起是从我的 应变 和 区域 列中获取以下项目 i 原始菌株 链霉菌 sp QL40 O ii 原始地区 区域1 1
  • Python urllib2 响应头

    我正在尝试提取 URL 请求的响应标头 当我使用firebug分析URL请求的响应输出时 它返回 Content Type text html 但是当我使用 python 代码时 urllib2 urlopen URL info 结果输出返
  • Jax-RS 中可选的 @PathParam

    我有一项服务 其中路径的最后一部分是可选的 用户都可以输入 mypath and mypath param1 我尝试使用正则表达式来过滤路径的最后部分 Path mypath param1 param1 我使用 RestEasy 作为我的
  • 使用 IF 语句时如何将 shell 命令拆分为多行?

    当命令是 shell 的一部分时 如何将命令拆分为多行if陈述 这有效 if fab fabfile deploy fabfile py forward agent disable known hosts deploy target the
  • 有没有优化 R 性能的文档? [复制]

    这个问题在这里已经有答案了 我对 R 相当陌生 令我印象深刻的一件事是它运行得相当慢 有没有优化R的文档 比如优化Python描述的很好here http wiki python org moin PythonSpeed Performan
  • 防止/禁用 Xcode 滚动导航

    每当我在故事板模式下使用 Xcode 时 我都会用触控板滚动 如果我向左滚动太远 Xcode 会将我带到我正在处理的最后一个 m h 文件 这太令人沮丧了 我不希望能够向左或向右滑动两根手指来在 Xcode 中导航 但我真的很喜欢 Safa
  • 将 .git 文件夹在工作树层次结构中向上移动

    昨天 我在 git 存储库上执行了其中一项操作 请参阅下面的代码片段 以便有效地将我的项目向上移动文件夹层次结构中的几个文件夹 这基本上列出了所有文件并向它们添加前缀文件夹名称并相应地更新索引 旧布局 Root Sublevel 1 Sub
  • 为什么我的应用没有在 Google Play 上显示?刚刚发布

    我只是第一次尝试发布我的应用程序 我完成了开发者控制台上的步骤 它现在显示 已发布 并带有绿色复选标记 在我点击 激活 和 发布 后 没有错误 然而 我尝试在手机 平板电脑和 Chrome 浏览器上的 Google Play 商店 称为 U
  • 将 PHP 多维数组返回到 Javascript/AJAX

    我的理解是 为了将复杂的 PHP 变量返回给 Javascript 应该通过 AJAX 和 json encode 来完成 有人能给我一个实际的例子 PHP 和 Javascript 代码 吗 假设我们在 PHP 中有一个两维数组 twoD
  • Firebase 字段名称会自动更改吗?

    你好 firebase 开始自动更改我的字段名称 这造成了一个大问题 我怎么解决这个问题 My Class public class TUser private String UserKey private String LicenceKe
  • C# 4 中会有通用属性吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 备份文件关闭Excel VBA

    我希望 Excel 在文件关闭时自动备份工作簿 而不提示用户 我在网上找到了下面的优秀代码 忘记源代码 但备份文件类型正在更改为我无法打开的 BAK 文件 我该如何解决这个问题 两个文件将位于同一文件夹中 备份应具有相同的文件名和 bak