2016-10-31 45 views
1

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

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

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 
+0

为了删除原始文件,您需要将'MyOldName'变量分配给'ActiveWorkbook.FullName'而不仅仅是.Name – tigeravatar

回答

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 

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

+0

这是用新的文件保存在当前目录,但我仍然收到“文件未找到”的错误。它不会删除原始文件。 – Robby

+0

尝试将'MyOldName = ActiveWorkbook.Name'更改为'MyOldName = ActiveWorkbook.FullName' – tjb1

+0

这样做的窍门!谢谢! – Robby

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”

+0

活动工作簿可能位于许多不同的目录中,因此需要保存在许多不同的目录中目录,所以我不能在代码中指定目录。 – Robby

+0

@Robby哦,好的,那样我就误解了你的问题。我会在这里留下答案,只是为了让别人有类似的问题。 –

相关问题