重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【6/2終了】教えて!goo新規会員登録

下記のマクロを実行すると、確認メッセージが表示され「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
以上となります。
よろしくお願いいたします。

A 回答 (4件)

確認メッセージを表示する前に、指定の圧縮ファイルが存在するかどうかをチェックするようにマクロを変更することができます。

以下のコードを参考にしてください:

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 関数を使用して指定の圧縮ファイルが存在するかどうかを確認します。もし存在しない場合は、確認メッセージを表示せずにマクロを終了します。存在する場合のみ、確認メッセージを表示し、ユーザーの応答に応じてファイルを削除します。
    • good
    • 0

dir関数使って対象ファイルがあるかどうか判定すればいいんじゃ無いっすかね



老婆心ながら。
そんなマクロ、間違って使いかねないようなものなんですか。わたしならそうい♪確認メッセージ自体を作らないですね。いちいちyesを選択するの面倒ですし。
さらに言えば、たぶんエクセルマクロでなく、batファイルつくっちゃいます。ちょっとファイル削除するためだけにエクセル起動するの、無駄に感じちゃいます。
    • good
    • 0

こんにちは



>既に圧縮ファイルが削除されて無い場合に~
ワイルドカードを使っているので、対象ファイルを特定できませんけれど・・

事前に DIR() 関数で該当ファイルの存在をチェックすれば良いだけの話に思われます。(DIR関数でもワイルドカードを利用できます)
https://learn.microsoft.com/ja-jp/office/vba/lan …
    • good
    • 0

まず、フラグを新たに1つ設け、値を初期化しておく



次に
https://tonari-it.com/excel-vba-filesystem-files …
にある手法で、該当フォルダに存在するファイル名をFor Eachでループさせ一つづつ取得しながら
Rightでファイル名末尾4文字を比較対象として .zip か?を判定する。該当する場合はフラグを立ててFor Eachのループを抜ける
Rightでファイル名末尾3文字を比較対象として .7z か?を判定する。該当する場合はフラグを立ててFor Eachのループを抜ける

ループ処理の直後で
フラグが立っていない場合は Exit Subする
フラグが立っている場合は後続処理(メッセージを表示するところからの処理)を実行する
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
参考にさせて頂きます。

お礼日時:2024/09/13 14:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています