- ベストアンサー
エクセル ワード 開いた状態から一発で削除できますか?
エクセル2003 ワード2003を使用しています。 表題の通りですが、 エクセルやワードを開いた状態から 一発で削除できますか。 できればショートカットキーで。 よく内容確認して削除するケースあるのですが、 毎回開いて閉じて削除していますが、 ストレスなので開いた状態から削除できたら便利と思うのですが。 どうぞ宜しくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 返事が遅くなりました。その理由は、Word削除のマクロが、自分が思っていた反応と、まったく違っていたからです。ショートカットの反応も違いました。今回、もう少し、反応が速くならないのかなって思いました。それでも、一応、Wordの方も、それぞれのフォルダの中身を、この機に整理しました。本当は、htaファイルやwsf で作ると、便利だろうなって思いましたが、今は、もう少し技術が足りません。 ------------------------------------------- >「プレビューの図を保存する」というのが >エクセルのプロパティを開いてもないのですが、 >こちらもし良かったら教えてもらえませんでしょうか。 これは、後からで、全部変更ることも可能なのですが、そのまま保存してしまうと、タイムスタンプが変わってしまうので、今後の問題にしたほうがよいです。 二種類の設定が必要です。 今は、Excel 2003 だけですが、Wordも同様です。 メニュー--ファイル--プロパティ--ファイルの概要-- 「プレビューの図を保存する」のチェックを入れる。 ツール--オプション--全般-- 「保存時にプロパティを確認する(P) のチェックを入れる ということです。 こうすると、画像が保存されて、「ファイルを開く」ダイアログ(プレビューモード)やエクスプローラで、その中身を確認にして、削除することが可能です。 '========================================= マクロ編 以下は、WordのVBAのモジュールに貼りつけてください。 本当は、特殊なツールを使うと、Word(Excelを含む)はその中身を開かずに見れるのですが、それを設定してもらうこと自体が、掲示板で教えるには、少し荷が重いような気がしました。そのツールは、" xdoc2txt.ocx " というものです。(参照URLは下段に) 以下は、コントロールツールのボタンに設定してください。 最初から、ThisDocument に入れて作ればよかったのですが、標準モジュールで作り始めてしまったので、このようなスタイルになってしまいました。 '========================================= Private Sub CommandButton1_Click() Call WordFileDeletePro End Sub Private Sub CommandButton2_Click() Call DeleteDoc End Sub '========================================= Dim FileName As String Dim fName As String Sub WordFileDeletePro() Dim fNames As Variant With Application.FileDialog(msoFileDialogFilePicker) .Filters.Add "Wordファイル", "*.doc", 1 .Filters.Add "Wordファイル", "*.doc?", 2 .Show Set fNames = .SelectedItems End With If fNames.Count = 0 Then Exit Sub FileName = fNames(1) fName = Mid(FileName, InStrRev(FileName, "\") + 1) If fName Like "$*.doc" Then If MsgBox(fName & "はそのまま削除します。", vbInformation + vbOKCancel) = vbOK Then Kill FileName MsgBox "削除しました。", vbExclamation Exit Sub Else MsgBox "中止しました。", vbExclamation Exit Sub End If End If On Error Resume Next Documents.Open FileName, , True On Error GoTo 0 If ThisDocument.FullName = FileName Then MsgBox "自ブックは、削除対象とすることが出来ません。", vbExclamation Exit Sub End If If MsgBox(fName & "を削除してよろしいですか?" & vbCrLf & _ "後で削除する場合は、別のボタンで削除してください。", vbQuestion + vbOKCancel) = vbOK Then Call DeleteDoc Else ThisDocument.Activate End If End Sub Sub DeleteDoc() Dim objFS As Object On Error Resume Next Set objFS = CreateObject("Scripting.FilesystemObject") If fName = "" Then MsgBox "ファイル名取得に失敗しています。" & vbCrLf & _ "もう一度やり直してください。", vbExclamation Exit Sub Set objFS = Nothing End If Documents(fName).Close False objFS.DeleteFile fName If Err.Number > 0 Then MsgBox "ファイル削除に失敗しました。", vbExclamation Else MsgBox fName & "の削除に成功しました。", vbInformation fName = "" FileName = "" End If On Error GoTo 0 End Sub
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 実害はないのですが、#5の修正します。 Sub WordFileDeletePro()から、 15行前後に ' MsgBox "削除しました。", vbExclamation とありますが、 MsgBox "削除しました。", vbInformation としてください。
- Wendy02
- ベストアンサー率57% (3570/6232)
#3 で、今、表題をみたら、Wordもありましたが、忘れていました。Wordに関しては、Excelと違って、Documentオブジェクトは複数があるわけではないので、別な方法があります。その件は、ご質問者さんの応対があってから、考えたいと思います。
補足
Wendy02さん 恐れ入ります。もしお時間ありましたら、 こちらも教えて頂けませんでしょうか。 どうぞ宜しくお願い致します。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 たぶん、内容を確認して削除しているのだと思います。 日ごろ、削除させるためにプロパティで、「プレビューの図を保存する」という表示をさせるようにしておけば、「ファイルを開く」ダイアログで、その画面を見ながら削除できるのです。 それ以外の方法ということで、ファイラーが良いかと思いましたが、Vector で数個を調べてみましたが、Excelファイルの削除を目的とする良いツールがありませんでした。どれも不向きです。 そこで、VBAのファイルオープンダイアログを組み合わせて、ReadOnlyで開いて、削除するという方法もあります。以下はサンプルですが、これでも、十分にフォルダ内部の整理は可能です。フォームのボタンに取り付けると便利です。 本当は、UserForm で作ったほうがよいのですが、ユーザーさん自身では、組み込みが難しいので、簡単なものにしました。私自身で、十数個のファイルを削除してみました。 登録名「ExcelFileDeletePro」 '------------------------------------------- 使い方:ボタンをクリックすると、ファイルダイアログが開きますので、それでブックを開きます。ReadOnly で開きますので、そのまま、削除しますか? と聞いてきますので、OK をクリックすれば削除されます。しかし、シート全体を調べたいと思ったら、Cancel をクリックしてください。 調べた後に、削除するなら、Ctrl + F2 をクリックすると、ブックは閉じて削除されます。 '標準モジュール '------------------------------------------- 'Option Explicit Dim SetKeyFlg As Boolean Dim fileName As Variant Dim fName As String Sub ExcelFileDeletePro() Dim Wb As Workbook If SetKeyFlg = False Then Call SetKey SetKeyFlg = True End If fileName = Application.GetOpenFilename("Excel(*.xls),*.xls", 1, "ファイル名取得") If VarType(fileName) = vbBoolean Or fileName = "" Then Exit Sub If ThisWorkbook.FullName = fileName Then MsgBox "自ブックは、削除対象とすることが出来ません。", vbExclamation Exit Sub End If Set Wb = Workbooks.Open(fileName, , True) fName = Wb.Name If MsgBox(Wb.Name & "を削除してよろしいですか?" & vbCrLf & _ "後でCtrl + F2 のショートカットでも削除出来ます。", vbQuestion + vbOKCancel) = vbOK Then Call DeleteWb On Error Resume Next If ActiveWorkbook.FullName <> ThisWorkbook.FullName Then ActiveWorkbook.Close False End If On Error GoTo 0 End If End Sub Private Sub SetKey() Application.OnKey "^{F2}", "DeleteWb" End Sub Private Sub DeleteWb() Dim objFS As Object On Error Resume Next Set objFS = CreateObject("Scripting.FilesystemObject") objFS.DeleteFile fName If Err.Number > 0 Then MsgBox "ファイル削除に失敗しました。", vbExclamation Else MsgBox fName & "の削除に成功しました。", vbInformation End If If ActiveWorkbook.Name <> ThisWorkbook.Name Then ActiveWorkbook.Close False End If On Error GoTo 0 End Sub Sub Auto_Close() Application.OnKey "^{F2}" End Sub
お礼
Wendy02さん 大変丁寧で詳しい解説どうも有り難うございます。 VBAできました。すごいですね!感動しました。 有り難うございます。 上の「プレビューの図を保存する」というのが エクセルのプロパティを開いてもないのですが、 こちらもし良かったら教えてもらえませんでしょうか。 どうぞ宜しくお願いします。
- nza49739
- ベストアンサー率46% (29/62)
ごめんなさい、この文から何を削除したいのかわからないのですが・・・
補足
nza49739さん すみません。説明不足でした。 このファイル自身を削除したいという意味でした。 どうも難しそうですね。。。
- edomin7777
- ベストアンサー率40% (711/1750)
何を削除したいのかが書かれていませんが…、 その開いているファイル自身を削除したいのなら「無理」です。 ※OSは一応マルチタスクで動いていますから削除しようとします。 ※今、自分で開いているので削除しようとしてもエラーになります。 ※「別のユーザがアクセスしている~」のようなエラーが出るはずです。 ※この「別のユーザ」とは、あなた自身のことです。
お礼
edomin7777さん ご回答ありがとうございます。 ファイル自身を削除したいのです。 無理ですか。。 結構できたら便利な気がしますが、、、 残念です。 有り難うございました。
お礼
Wendy02さん 本当に有り難うございます。 集中してやってみる時間がなくてお礼遅れてしまいすみません。 色々と勉強になり参考になり、 ストレスから解消されそうです。 どうも有り難うございました。