プロが教える店舗&オフィスのセキュリティ対策術

エクセルのマクロについて教えてください
マクロを実行すると
メッセージボックスが表示されて
okをクリックすると
作業フォルダのダイナログが開いて フォルダ内にあるフォルダやファイルをCtrlキーを押しながらマウスで指定したフォルダやファイルを削除出来る方法を教えて下さい
メッセージボックスのアイコンは赤丸に✖️でメッセージは
回答フォルダ、不要ファイルを削除します。
okをクリックすると
作業フォルダのダイナログが開いて
削除したいフォルダやファイルを指定して 警告文なしで okで削除
その後 次の作業に進みます
メッセージのキャンセルをクリックするとマクロは実行されず
次の作業に進めます
詳しいコードを教えてください
よろしくお願いします

質問者からの補足コメント

  • 回答ありがとうございました
    私の質問文が悪かったようです
    質問文中の
    次の作業に進めます

    コードから無くして頂けますか?
    又 出来るだけ クリックの回数を減らしたのですが
    メッセージボックスでokかキャンセル
    okね場合は削除フォルダやファイルを指定した後に削除ボタンをクリック
    みたいな感じですが
    お願い出来ますでしょうか?
    何度も申し訳ありません
    よろしくお願いします

      補足日時:2023/07/05 19:51
  • うーん・・・

    おはようございます。
    カードを設定しマクロを実行しましたが、
    「フォルダ」削除のダイヤログのみが表示されてしまい、
    作業フォルダの不要ファイルを削除することが出来ませんでした。
    不要フォルダ及び不要ファイルを選択して、削除出来る解決方法をお願いいたします。
    何度も申し訳ありません。
    よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/07/06 09:08
  • うーん・・・

    回答ありがとうございます。
    ご指示通りのコードを設定しましたが、
    指定したフォルダの削除が出えきませんでした。
    フォルダは指定出来ておりますが、
    削除されておりませmm
    ファイルは全て上手く行きました。
    メッセージボックスに「ファイルは削除されました」と出ていますが、
    フォルダが削除されたとは出てきませんでした。
    動作確認をされたとの事でしたが、
    何度申し訳ありません、
    解決方法を教えてください。

    No.3の回答に寄せられた補足コメントです。 補足日時:2023/07/06 15:20
  • 今回送っていただきましたコードは私の希望の通りのマクロになります。
    余分な警告文等々が表示されず、大変使用しやすいです。
    何卒、フォルダも削除出来るようにお願いいたします。
    よろしくお願いします。

      補足日時:2023/07/06 15:24
  • うーん・・・

    例えばですが、
    この度のマクロを
    フォルダ削除マクロと
    ファイル削除(複数選択)マクロとを別々にしていただくとこは可能でしょうか。
    2つのマクロを統合して一つのマクロとして使用することも可能かと思います。
    よろしくお願いします。

      補足日時:2023/07/06 15:33

A 回答 (4件)

フォルダが削除できません。

色々試したんですがダメでした。
ファイルを削除するときは選択してOKボタン。
フォルダを含む場合は選択して右クリックで削除でお願いします。
ちょっとスマートじゃないんですけど、すいません。
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2023/07/06 19:54

Sub フォルダ削除マクロ()


' メッセージボックスの表示
Dim result As VbMsgBoxResult
result = MsgBox("回答フォルダ、不要ファイルを削除します。続行しますか?", vbCritical + vbYesNo, "作業フォルダ削除")

' キャンセルがクリックされた場合、マクロの実行を終了
If result = vbNo Then Exit Sub

' フォルダダイアログを開いてフォルダを選択
Dim folderPath As String
With Application.fileDialog(msoFileDialogFolderPicker)
.Title = "作業フォルダを選択してください"
.Show
If .selectedItems.Count > 0 Then
folderPath = .selectedItems(1)
Else
Exit Sub
End If
End With

' ファイル選択ダイアログを開いてファイルを選択
Dim fileDialog As fileDialog
Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)

' 複数のファイル選択を許可
fileDialog.AllowMultiSelect = True

' ファイル選択ダイアログを表示
If fileDialog.Show = -1 Then
' 選択されたファイルを削除
Dim selectedFile As Variant
For Each selectedFile In fileDialog.selectedItems
On Error Resume Next
VBA.FileSystem.Kill selectedFile
On Error GoTo 0
Next selectedFile

' メッセージボックスの表示
MsgBox "ファイルの削除が完了しました。", vbInformation + vbOKOnly, "作業フォルダ削除"
End If
End Sub


一応動作確認しました。
この回答への補足あり
    • good
    • 0

Sub DeleteFoldersAndFiles()


' メッセージボックスの表示
Dim response As Integer
response = MsgBox("回答フォルダ、不要ファイルを削除します。続行しますか?", vbExclamation + vbOKCancel, "削除の確認")

' OKをクリックした場合の処理
If response = vbOK Then
' 作業フォルダの選択
Dim dialog As FileDialog
Dim folderPath As String
Set dialog = Application.FileDialog(msoFileDialogFolderPicker)
dialog.Title = "削除するフォルダを選択してください"
dialog.AllowMultiSelect = False

' フォルダの選択ダイアログを表示
If dialog.Show = -1 Then
folderPath = dialog.SelectedItems(1)

' Ctrlキーを押しながらマウスで指定したフォルダやファイルを削除
Dim objShell As Object
Set objShell = CreateObject("Shell.Application")
objShell.Namespace(Left(folderPath, InStrRev(folderPath, "\") - 1)).ParseName(Right(folderPath, Len(folderPath) - InStrRev(folderPath, "\"))).InvokeVerb ("delete")

MsgBox "削除が完了しました。", vbInformation, "削除完了"
End If
Else
' キャンセルをクリックした場合の処理
MsgBox "削除をキャンセルしました。", vbInformation, "削除キャンセル"
End If
End Sub
この回答への補足あり
    • good
    • 0
この回答へのお礼

何度も
ありがとうございます
早速試してみます
後ほどご連絡させていただきます
ありがとうございました

お礼日時:2023/07/05 20:06

Sub DeleteFoldersAndFiles()


' メッセージボックスを表示
Dim response As Integer
response = MsgBox("回答フォルダと不要ファイルを削除します。続行しますか?", vbCritical + vbOKCancel, "警告")

' OKをクリックした場合
If response = vbOK Then
' フォルダの選択ダイアログを表示
Dim folderPath As Variant
folderPath = Application.GetOpenFilename("フォルダを選択してください", , "フォルダの選択", , True)

' フォルダが選択された場合
If folderPath <> False Then
' フォルダやファイルを削除
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder folderPath, True

' 次の作業に進む
' ここに次の作業のコードを記述する
End If
Else ' キャンセルをクリックした場合
' 次の作業に進む
' ここに次の作業のコードを記述する
End If
End Sub
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます
早速試してみます
後ほどご連絡させていただきます

お礼日時:2023/07/05 19:42

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