VBA - Excel - 另存为并删除原始工作簿

时间:2016-10-31 14:16:59

标签: excel vba excel-vba excel-2010

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

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

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

2 个答案:

答案 0 :(得分:2)

您需要在路径之后和文件名之前添加\

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

编辑:更新了答案以包含评论修复。

答案 1 :(得分:0)

所以我有一些代码用于自动保存文件(到代码中指定的目录),然后从所述文件夹中删除特定的文件类型。 (我用它来保存.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代码中

请注意,目前将文件保存为名称中当前系统日期前一天的测试,例如"测试30.10.16"