2016-10-31 149 views
1

Personal.xlsbファイルから、現在のアクティブブックを同じディレクトリにユーザー定義可能な名前として保存し、元のブックを削除します。VBA - Excel - 元のブックを別名で保存して削除

以下は私のコードです。それには2つの問題があります。 1つ、何らかの理由でブックをMy Documentsフォルダに保存します。アクティブなブックはマイドキュメントにありません。完全に別のドライブのフォルダにあります。 2つ目は、「ファイルが見つかりません」というエラーがスローされます。

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

元のファイルを削除するには、単に名前の代わりに 'ActiveWorkbook.FullName'に' MyOldName'変数を割り当てる必要があります。 – tigeravatar

答えて

2

パスの後でfilenameの後に\を含める必要があります。

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

私は、ファイルを(コードで指定されたディレクトリに)自動保存するために使用するコードをいくつか持っており、そのフォルダから特定のファイルタイプを削除します。これは、私は長いVBAモジュール内で使用されるコードである

'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 

(私はの.xlsxを保存し、.csvファイルを削除するためにそれを使用)しますが、既存のVBAコード

テイクにこれを組み込むことができます"Testing 30.10.16"のような名前の現在のシステム日付の前日にTestingとしてファイルを保存することに注意してください。

+0

アクティブブックは多くの異なるディレクトリに存在する可能性があり、ディレクトリには、コード内にディレクトリを指定することはできません。 – Robby

+0

@Robbyああ、その場合、私はあなたの質問を誤解しました。私は答えをここに残しておきます。同様の問題を抱えている人に利益をもたらします。 –

関連する問題