VBA – Excel – 另存为和删除原始工作簿

从Personal.xlsb文件,我想VBA将当前活动工作簿保存为用户可定义的名称在同一目录中,并删除原始工作簿。

以下是我的代码。 它有两个问题。 一,它出于某种原因将工作簿保存在“我的文档”文件夹中。 活动工作簿不在“我的文档”中。 它在一个完全不同的驱动器中的文件夹中。 二,它会抛出“文件未find”的错误。

Sub RenameFile() Dim thisWb As Workbook Set thisWb = ActiveWorkbook MyOldName = ActiveWorkbook.Name MyNewName = InputBox("What do you want to rename the file as?", "Rename", ActiveWorkbook.Name) ActiveWorkbook.SaveAs Filename:=thisWb.Path & MyNewName Kill MyOldName End Sub 

您需要在path之前和文件名之前包含\

 Sub RenameFile() Dim thisWb As Workbook Set thisWb = ActiveWorkbook MyOldName = ActiveWorkbook.FullName MyNewName = InputBox("What do you want to rename the file as?", "Rename", ActiveWorkbook.Name) ActiveWorkbook.SaveAs Filename:=thisWb.Path & "\" & MyNewName Kill MyOldName End Sub 

编辑:更新答案以包含来自评论的修复。

所以我有一些代码用于自动保存文件(到代码中指定的目录),然后从文件夹中删除特定的文件types。 (我用它来保存一个.xlsx并删除.csv)

 'Saves file to specified location ActiveWorkbook.SaveAs filename:="C:\Desktop\Testing\Testing File " _ & Format(Now() - 1, "DD.MM.YY") & ".xlsx" _ , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False On Error Resume Next Kill "C:\Desktop\Testing*.csv*" On Error GoTo 0 

这是我用在一个较长的VBA模块中的代码,但是你可以将它合并到现有的VBA代码中

需要注意的是,当前将该文件保存为名称中当前系统date之前一天的testing,例如“Testing 30.10.16”