Anna Lea拥有一个只读工作簿,可将其用作她创建的每日报告的模板。文件名很长,以20507xx结尾。当她双击工作簿时,它将打开并显示它是只读的。她进行了更改,然后使用“另存为”。由于Excel可以识别该文件为只读文件,因此建议使用由旧文件组成的新文件名,并以单词“ Copy of”作为前缀。安娜想摆脱“副本”,因此她要做的就是更改文件名的“ xx”部分以创建当天的报告。

Excel自动添加“副本”字样。如果使用“另存为”,则不使用宏来控制保存过程就无法更改此设置。以下宏(另存为ThisWorkbook对象的一部分)显示了如何完成此操作。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI _   As Boolean, Cancel As Boolean)

Dim sTemp As String     Dim sCheck As String     sCheck = "xx.xls"



If SaveAsUI Then         sTemp = ThisWorkbook.Name         If Right(sTemp, Len(sCheck)) = sCheck Then             sTemp = Left(sTemp, Len(sTemp) - Len(sCheck))

sTemp = sTemp & Format(Now, "dd") & ".xls"

sTemp = ThisWorkbook.Path & "/" & sTemp             ThisWorkbook.SaveAs Filename:=sTemp, _               FileFormat:=xlNormal             Cancel = True         End If     End If End Sub

宏首先检查以查看是否将显示“另存为”对话框。如果是,则将工作簿的名称分配给sTemp变量。检查此名称以查看后六个字符是否为“ xx.xls”(来自sCheck变量)。如果是这样,则假定工作簿是需要更改名称的工作簿。

首先是“ xx.xls”字符(或分配给sCheck的任何字符)

从工作簿名称的末尾删除。然后,将今天的日期(两位数字,表示一个月中的日期)附加到文件名后,后跟“ .xls”后缀。最后,使用此新构建的文件名保存工作簿。取消标志设置为True,以便从不显示“另存为”对话框。

请注意,永远不会检查名称的单词“副本”。这样做的原因很简单:在显示实际的“另存为”对话框之前,不会在文件名的开头添加措辞。在此之前(执行此事件处理程序时),工作簿名称保持不变。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(3064)适用于Microsoft Excel 97、2000、2002和2003。