
下記のマクロを実行すると、確認メッセージが表示され「YES」をクリックすると
マクロ設定ブックと同じフォルダ内にある指定の圧縮ファイルを削除できます。
このコードを変更して
マクロ設定ブックと同じフォルダ内に既に圧縮ファイルが削除されて無い場合に
マクロを実行した時に確認メッセージが表示されない方法を教えてください。
現状のマクロ
Sub 削除()
Dim alert As VbMsgBoxResult
alert = MsgBox("圧縮ファイルを削除してよろしいですか?", vbYesNo + vbQuestion, "削除確認")
If alert <> vbYes Then
Exit Sub
End If
On Error Resume Next
Kill ThisWorkbook.Path & "\*.zip"
Kill ThisWorkbook.Path & "\*.7z"
End Sub
以上となります。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
確認メッセージを表示する前に、指定の圧縮ファイルが存在するかどうかをチェックするようにマクロを変更することができます。
以下のコードを参考にしてください:Sub 削除()
Dim zipFiles As String
Dim sevenZipFiles As String
' 圧縮ファイルのパスを取得
zipFiles = Dir(ThisWorkbook.Path & "\*.zip")
sevenZipFiles = Dir(ThisWorkbook.Path & "\*.7z")
' 圧縮ファイルが存在するか確認
If zipFiles = "" And sevenZipFiles = "" Then
' 圧縮ファイルが存在しない場合、メッセージを表示せずに終了
Exit Sub
End If
' 確認メッセージを表示
Dim alert As VbMsgBoxResult
alert = MsgBox("圧縮ファイルを削除してよろしいですか?", vbYesNo + vbQuestion, "削除確認")
If alert <> vbYes Then
Exit Sub
End If
On Error Resume Next
' 圧縮ファイルを削除
Kill ThisWorkbook.Path & "\*.zip"
Kill ThisWorkbook.Path & "\*.7z"
End Sub
このコードでは、まず Dir 関数を使用して指定の圧縮ファイルが存在するかどうかを確認します。もし存在しない場合は、確認メッセージを表示せずにマクロを終了します。存在する場合のみ、確認メッセージを表示し、ユーザーの応答に応じてファイルを削除します。
No.4
- 回答日時:
dir関数使って対象ファイルがあるかどうか判定すればいいんじゃ無いっすかね
老婆心ながら。
そんなマクロ、間違って使いかねないようなものなんですか。わたしならそうい♪確認メッセージ自体を作らないですね。いちいちyesを選択するの面倒ですし。
さらに言えば、たぶんエクセルマクロでなく、batファイルつくっちゃいます。ちょっとファイル削除するためだけにエクセル起動するの、無駄に感じちゃいます。
No.2
- 回答日時:
こんにちは
>既に圧縮ファイルが削除されて無い場合に~
ワイルドカードを使っているので、対象ファイルを特定できませんけれど・・
事前に DIR() 関数で該当ファイルの存在をチェックすれば良いだけの話に思われます。(DIR関数でもワイルドカードを利用できます)
https://learn.microsoft.com/ja-jp/office/vba/lan …
No.1
- 回答日時:
まず、フラグを新たに1つ設け、値を初期化しておく
次に
https://tonari-it.com/excel-vba-filesystem-files …
にある手法で、該当フォルダに存在するファイル名をFor Eachでループさせ一つづつ取得しながら
Rightでファイル名末尾4文字を比較対象として .zip か?を判定する。該当する場合はフラグを立ててFor Eachのループを抜ける
Rightでファイル名末尾3文字を比較対象として .7z か?を判定する。該当する場合はフラグを立ててFor Eachのループを抜ける
ループ処理の直後で
フラグが立っていない場合は Exit Subする
フラグが立っている場合は後続処理(メッセージを表示するところからの処理)を実行する
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
Vba FileSystemObject オブジェ...
-
複数のExcelファイルをマージす...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
【マクロ】値を渡されたプロシ...
-
VBAでユーザーフォームを指定回...
-
【ExcelVBA】5万行以上のデー...
-
VBAでセルの書式を変えずに文字...
-
Web画面の文字をVB6で取得したい
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
エクセルの改行について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba Array関数について教えてく...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】シートの変数へ入れ...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBAでユーザーフォームを指定回...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
-
ワードの図形にマクロを登録で...
-
VBAの「To」という語句について
-
【マクロ】変数を使った、文字...
おすすめ情報