シーゴの Excel 研究室

タイトル変更しました (旧称:今日を乗り切るExcel研究所)

Excel ファイルを読み捨てたい

不要な Excel ファイルを素早くごみ箱へ捨てる方法を検討します。また、開いている Excel ファイルを自動的に閉じてゴミ箱へ移動するマクロのサンプルプログラムを公開します。

f:id:shego:20170503134117p:plain

増殖する Excel ファイル

Excel は油断していると要らないファイルがどんどん溜まりますね。

「マイドキュメント」フォルダには「Book123.xlsx」のような連番や「○○コピーコピーコピー.xlsx」とかいう謎のファイルが大量に増殖しています。

「デスクトップ」には受信メールの添付 xlsx ファイルや ZIP 解凍した xlsx ファイルなどが散在しています。

Web ブラウザや SNS アプリからダウンロードしたファイルもどこかに保存されていて、閲覧する度に「資料 (2).xlsx」 といった連番が知らないうちに増えていきます。

不要なファイルは削除すればいいのですが、問題は、そのファイルを捨てていいのかどうか、開いて確認してみないと分からないことです。

ファイル内容を見て、「あ、これゴミだ」と思っても、それを閉じてから保存先のフォルダを探しファイルを探して削除するというのも手間で、なにかと後回しになりがちです。

後で溜まった古い Excel ファイルをいっぺんに整理するにしても、まとまった時間が必要です。

そもそもダウンロードした資料やメールに添付された報告書なら、オリジナルがサーバに保存されていて何時でもまた取得できるので、取っておく必要さえありません。

そのようなファイルは見終わったらすぐに削除する習慣を身に付けておきたいものです。

手作業で Excel ファイルを削除するには

開いているファイルを手早く削除する手順を検討してみます。

まず、保存先のフォルダを、ファイルを閉じる前にあらかじめ取得しておく必要があります。

ファイルパスを調べてもいいのですが、Excel には「ファイルの保存場所を開く」というコマンドがあるのでこれを使います。

このコマンドは、「ファイル」タブの[情報]画面にありますが、ややこしいことに2か所あります(Excel 2013)。

一つは、「情報」画面右下の関連ドキュメントのセクションにあり、もう一つは隠しコマンドで「情報」画面の上のファイルのパス表示をクリックすると現れます。

f:id:shego:20170507192546p:plain:w562

どちらでもいいように思いますが、OneDriveを利用されている方には注意が必要です。(OneDrive は Microsoft のクラウドサービスです)

筆者の環境では、OneDrive 上にあるファイルで動作に違いが確認されました。(Windows10/Excel2013)

開いているファイルが OneDrive 上にある場合、画面上の隠しコマンドの方は普通に PC 上のフォルダがエクスプローラで開きますが、画面右下に表示されている方をクリックするとなんとWebブラウザ経由でクラウド側のパスが開きます。

OneDrive については今後の課題として、とりあえず今回は隠しコマンドの方を使います。

ただ、これを一発で実行できるショートカットはなさそうです。

隠しコマンドの「ファイルの保存場所を開く」へのアクセスキーは AltFIGOになります。(Excel 2013の場合)

【手順例】

  1. 既存のExcelファイルを開き、内容を確認します
  2. 「ファイルの保存場所を開く」を実行します
    • キー操作: AltFIGO
  3. 保存先フォルダがエクスプローラで開かれます
  4. いったん Excel に戻って対象ファイルを閉じます
    • キー操作: AltC
      (「情報」画面でCtrl + Wはできません)
  5. そのファイルをフォルダ内で選択し削除します
    • キー操作: Delete(ゴミ箱に移動)
    • キー操作: Shift + Delete(完全に削除)

フォルダ内の該当ファイルは自動選択されていないので、ファイルが沢山あるときはまた探すのがちょっと辛い感じです。

ファイルを閉じる前に上書き保存しておくと、日付時刻のソートで見つけやすくなるかもしれません。

 



ファイルを閉じて自動削除するマクロ

ファイルを閉じて削除する VBA マクロを作成してみました。

下記マクロ VBA を実行すると、現在開いている(アクティブな) Excel ファイルを閉じ、そのファイルを自動的に「ゴミ箱に移動」します。

変更を保存せず(ゴミなので)、「ファイルの削除」の確認ダイアログも表示されないのがちょっと怖いかもしれません。

本来なら「ファイルの削除」確認ダイアログは表示されるはずだったのですが、どうも Windows 8 あたりからデフォルトで表示させない設定になっているようです(必要なら「削除の確認の表示」設定で表示を有効に変更できます)。

また、マクロを実行するときに、Shift キーも同時に押していると、「ゴミ箱へ移動」ではなく「完全に削除」になります(ことのとき確認ダイアログは表示されます)。

そのため注意して欲しいのは、このマクロにショートカットに割り付けたいときで、Shift キーも追加されていると(Ctrl + Shift + Wなど)、それが効いて必ず「完全に削除」になってしまいます。

OneDrive やファイルサーバの共有フォルダにあるファイルも、「ゴミ箱へ移動」ではなく「完全に削除」になります。OneDrive ではクラウド経由の削除になるようです。

Option Explicit

Sub ファイルを閉じて削除する()
    Dim wasteFile As String
    wasteFile = ActiveWorkbook.FullName
    If ActiveWorkbook.Path = "" Then
        Beep ' 新規で未保存は対象外
    ElseIf wasteFile = ThisWorkbook.FullName Then
        Beep ' マクロ自体のファイルは削除不可
    Else
        ActiveWorkbook.Close False
        moveToRecycleBin wasteFile
    End If
End Sub

Private Sub moveToRecycleBin(fileFullName As String)
    Dim fso As Object
    Dim shl As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set shl = CreateObject("Shell.Application")

    Dim shlFolder As Object
    Dim shlFolderItem As Object
    Set shlFolder = shl.Namespace(fso.GetParentFolderName(fileFullName))
    Set shlFolderItem = shlFolder.ParseName(fso.GetFileName(fileFullName))
    
    shlFolderItem.InvokeVerb "delete"
End Sub

【使い方】

  1. 標準モジュールに上記マクロ VBA をコピー&ペーストします
  2. 整理したい Excelファイルを開き、内容を確認します
    • 本マクロ VBA 自体のファイルとは別のファイルです
  3. 不要なファイルだと判断したら上記マクロを実行します
  4. ファイルが閉じられ、ゴミ箱に移動されます

【注意】 本マクロを実行して意図しないファイルが削除されてしまっても、環境の違い、誤操作、本マクロの不具合等いかなる原因にも係わらず、当方はその損失・損害等の責任を負いかねますのであらかじめご了承ください。

Window 10 の Excel 2013 で動作確認しました。