2010-05-14 184 views
4

我正在尝试创建一个宏,它可以在关闭时或保存时运行以将文件备份到其他位置。
目前宏我用的是:VBA宏将excel文件保存到不同的备份位置

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
'Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    'Saves the current file to a backup folder and the default folder 
    'Note that any backup is overwritten 
    Application.DisplayAlerts = False 
    ActiveWorkbook.SaveCopyAs Filename:="T:\TEC_SERV\Backup file folder - DO NOT DELETE\" & _ 
    ActiveWorkbook.Name 
    ActiveWorkbook.Save 
    Application.DisplayAlerts = True 
End Sub 

这将创建文件确定在第一时间进行备份,但是,如果这是一次尝试,我得到:

Run-Time Error '1004';
Microsoft Office Excel cannot access the file 'T:\TEC_SERV\Backup file folder - DO NOT DELETE\Test Macro Sheet.xlsm. There are several possible reasons:
The file name or path does not exist
The file is being used by another program
The workbook you are trying to save has the same name as a...

我知道路径是正确的,我也知道该文件没有在其他地方打开。该工作簿与我试图保存的名称相同,但它应该只是覆盖。

任何帮助将不胜感激。

+0

我不能重现此问题(至少,不与Excel 2002)。在那里工作很好。你确定你没有打开你的备份文件吗?你是否知道当你打开你的备份文件时,它会尝试将自己备份到备份文件夹中? – 2010-05-14 11:13:48

+0

是的,我意识到这一点,这就是关闭命令中的一个问题,这让我想到了保存命令。这将从备份中删除问题,因为它不会被保存。备份文件绝对不会打开。它有点困惑。 我最初也是从工具栏中的自定义按钮运行命令,但忘记点击它的人却遇到了问题。因此,关闭事件被替换。 – 2010-05-14 12:13:45

回答

4

我修改了代码,以这样的:

Sub BUandSave2() 
'Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
'Saves the current file to a backup folder and the default folder 
'Note that any backup is overwritten 
Dim MyDate 
MyDate = Date ' MyDate contains the current system date. 
Dim MyTime 
MyTime = Time ' Return current system time. 
Dim TestStr As String 
TestStr = Format(MyTime, "hh.mm.ss") 
Dim Test1Str As String 
Test1Str = Format(MyDate, "DD-MM-YYYY") 

Application.DisplayAlerts = False 
' 
Application.Run ("SaveFile") 
' 
ActiveWorkbook.SaveCopyAs Filename:="T:\TEC_SERV\Backup Test\" & Test1Str & " " & TestStr & " " & ActiveWorkbook.Name 
ActiveWorkbook.Save 
Application.DisplayAlerts = True 
End Sub 

现在工作得很好。大学网络上必须有一些东西阻止原始文件的运行。我在家里没有任何问题。

+0

在Application.Run(“SaveFile”)中出现错误 – 2015-07-16 10:17:26

+0

谢谢,我开始使用它! – Simon 2016-11-25 14:48:06

1

我试过你写的代码,我发现代码工作,但是当我打开备份文件时,我得到了同样的错误。

所以我认为你必须在出现错误时打开备份文件。

我写了一个代码,以帮助这个错误:

If ActiveWorkbook.Path = "D:\MOVIES\excel test\Backup" Then 
    Exit Sub 
Else 
    Application.DisplayAlerts = False 
    ActiveWorkbook.SaveCopyAs Filename:="D:\MOVIES\excel test\Backup\" & _ 
    ActiveWorkbook.Name 
    ActiveWorkbook.Save 
    Application.DisplayAlerts = True 

我不觉得有什么不对的校园网络。

如果您不是满意的答复或有任何疑问,请发送电子邮件至我[email protected]

问候

Kishlay米什拉