Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 截取工作簿保存事件并将字符串附加到工作簿文件名的末尾_Excel_Vba - Fatal编程技术网

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