Excel 截取工作簿保存事件并将字符串附加到工作簿文件名的末尾
我知道如何在模块级拦截工作簿的保存事件:Excel 截取工作簿保存事件并将字符串附加到工作簿文件名的末尾,excel,vba,Excel,Vba,我知道如何在模块级拦截工作簿的保存事件: Dim WithEvents app As Application Private Sub app_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub 我想做的是在实际文件名的末尾附加一个字符串。例如,如果我使用名称Sales.xls保存,我希望能够自动将\u extract添加到末尾,以便名称为Sales\u
Dim WithEvents app As Application
Private Sub app_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
End Sub
我想做的是在实际文件名的末尾附加一个字符串。例如,如果我使用名称Sales.xls
保存,我希望能够自动将\u extract
添加到末尾,以便名称为Sales\u extract.xls
,但我不知道如何执行此操作。将其放入子文件夹中
Dim myFileName As String
myFileName = ActiveWorkbook.FullName
ActiveWorkbook.SaveAs Filename:=Split(myFileName, ".")(0) & "test." & Split(myFileName, ".")(1)
将“test.”更改为您想要的任何内容,但确保它以“.”结尾。您可以在此工作簿模块中截获事件:
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Const CUSTOM_NAME As String = "_extract"
Dim fn As String
fn = Me.Name
If InStr(fn, ".") > 0 Then fn = Left(fn, InStrRev(fn, ".") - 1)
Cancel = Not Right(fn, Len(CUSTOM_NAME)) = CUSTOM_NAME
If Cancel Then
Application.EnableEvents = False
'Application.DisplayAlerts = False
Me.SaveAs Me.Name & "_extract" & Right(Me.Name, InStrRev(Me.Name, ".") - 1)
'Application.DisplayAlerts = True
Application.EnableEvents = True
End If
End Sub
嗯,可能是一种解决方法,您可以通过输入框向用户请求saveas名称,然后执行类似于
activeworkbook.saveas文件名:=[inputboxvariable]&“\u extract”的操作,然后是activeworkbook.close
?