2016-10-31 48 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哦,好的,那樣我就誤解了你的問題。我會在這裏留下答案,只是爲了讓別人有類似的問題。 –

相關問題