新浪博客

如何用VBA实现将Excel 关闭后直接另存到一个指定的路径,并在另存文件名后自动获取系统时间

2011-11-02 16:41阅读:
本例假设文件另存为:C:\aaa.xls,你可以自行修改 请在ThisWorkBook对象中输入如下代码: Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.SaveAs Filename:='C:\aaa.xls', _ FileFormat:=xlNormal, Password:='', WriteResPassword:='', _ ReadOnlyRecommended:=False, CreateBackup:=False End Sub

追问

我另存为的文件名不想覆盖之前的文件名,所以想在文件名后面自动获得系统时间,这个怎么做呢?

回答

已新改,试试. 本例假设文件另存为:C:\aaa.xls,time()取得系统时间,文件路径和文件名你可以自行修改 请在ThisWorkBook对象中输入如下代码: Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim MyFileName as String MyFileName='C:\aaa.xls'&time() ActiveWorkbook.SaveAs Filename:=MyFileName, _ FileFormat:=xlNormal, Password:='', WriteResPassword:='', _ ReadOnlyRecommended:=False, CreateBackup:=False End Sub
INPUT>

追问

Sub 宏1() Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim MyFileName as String MyFileName='C:\aaa.xls'&time() ActiveWorkbook.SaveAs Filename:=MyFileName, _ FileFormat:=xlNormal, Password:='', WriteResPassword:='', _ ReadOnlyRecommended:=False, CreateBackup:=False ThisWorkbook.Save End Sub 运行时弹出缺少end sub ,我再添加一个end sub 也还是这样,什么原因呢?

回答

说明: 首先.这个代码要在ThisWorkBook对象中输入.具体操作如下: 1.按ALT+F11,打开工程资源管理器(CTRL+R),这时窗口左侧出现资源管理器, 2.双击资源管理器中的ThisWorkBook,这时在右侧出现代码编写窗口. 3.在编写窗口中左边下拉框,选择WorkBook,再在右边下拉框选择BeforeClose 4.此时光标停在:如下两行代码之间 Private Sub Workbook_BeforeClose(Cancel As Boolean) 请把第5点的代码复制到此处-----这行是空行,文字是为了说明下面而加的 End Sub 5.把如下代码复制到上述两行代码之间. Dim MyFileName as String MyFileName='C:\aaa'&time()&'.xls' ActiveWorkbook.SaveAs Filename:=MyFileName, _ FileFormat:=xlNormal, Password:='', WriteResPassword:='', _ ReadOnlyRecommended:=False, CreateBackup:=False ThisWorkbook.Save

追问

HI,高人 另存文件名后面自动获取系统时间这个运行还是不成功也!!!!

回答

问题找到了可能是时间格式不对:重新开始 说明: 首先.这个代码要在ThisWorkBook对象中输入.具体操作如下: 1.按ALT+F11,打开工程资源管理器(CTRL+R),这时窗口左侧出现资源管理器, 2.双击资源管理器中的ThisWorkBook,这时在右侧出现代码编写窗口. 3.在编写窗口中左边下拉框,选择WorkBook,再在右边下拉框选择BeforeClose 4.此时光标停在:如下两行代码之间 Private Sub Workbook_BeforeClose(Cancel As Boolean) 请把第5点的代码复制到此处-----这行是空行,文字是为了说明下面而加的 End Sub 5.把如下代码复制到上述两行代码之间. ========================================== (=====上面这部分没有改变,下面的代码请复制) Dim MyFileName As String Dim MyPath As String MyPath = 'C:\' If Not ThisWorkbook.Path & '\' = MyPath Then MyFileName = MyPath & 'aaa' & Hour(Time()) & '时' & Minute(Time()) & '分' & Second(Time()) & '秒' & '.xls' ActiveWorkbook.SaveAs Filename:=MyFileName, _ FileFormat:=xlNormal, Password:='', WriteResPassword:='', _ ReadOnlyRecommended:=False, CreateBackup:=False ThisWorkbook.Save End If 6.保存文件. 7.当关闭文件后,会在C:\目录下出现一个文件,例如,aaa10时32分05秒.xls........,打开后关闭一次就会另存一次. 注意: MyPath='C:\'这行的C:\可以自行修改,改为自己已经建立了的备份文件路径.

追问

非常感谢,解决了!!!!!!

赞同
1
| 评论
如何用VBA实现将Excel <wbr>关闭后直接另存到一个指定的路径,并在另存文件名后自动获取系统时间
向TA求助
回答者: wwbd2008116 | 五级采纳率:19%
擅长领域: 软件共享 学习帮助 操作系统/系统故障
参加的活动: 暂时没有参加的活动
提问者对于答案的评价:
谢谢

我的更多文章

下载客户端阅读体验更佳

APP专享