下記のマクロは作業ブック内の指定ファイルを削除出来るマクロになっておりますが、
このマクロを
作業ブック内の指定フォルダが削除を削除出来る方法を詳しいコードを教えてください。
マクロ
Sub Macro1()
' メッセージボックスの表示
Dim result As VbMsgBoxResult
result = MsgBox("不要ファイルを削除します", vbCritical + vbYesNo, "作業フォルダ削除")
' キャンセルがクリックされた場合、マクロの実行を終了
If result = vbNo Then Exit Sub
' ファイル選択ダイアログを開いてファイルを選択
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
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
参考コード
#1で言うと あ b i ③ です
フォルダとファイル2つ 別のプロシージャ 削除のプロシージャも別
複数選んでも1つでも処理できると思います
ゴミ箱に移動する処理ですが 移動できず削除される場合もあります
たしかネットワークなど・・・エラーは出なかったかと思いますが念のため
on error を入れています ブックがやばそうなのでDoEventsも入れてます
初期フォルダはThisWorkbook.Path
ThisWorkbook.Pathを変えれば最初のフォルダを変えられます
Sub フォルダ削除()
Dim InitialPath As String
InitialPath = ThisWorkbook.Path
Dim rs As Integer
rs = MsgBox("フォルダを削除します。", vbCritical + vbOKCancel, "削除の確認")
If rs = vbOK Then
Dim folderPath As Variant
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "削除するフォルダを選択してください"
.InitialFileName = InitialPath
If .Show = -1 Then
folderPath = .SelectedItems(1)
Call MoveDustbox(folderPath)
Else
MsgBox "削除をキャンセルしました。", vbInformation
Exit Sub
End If
End With
End If
End Sub
Sub ファイル削除()
Dim InitialPath As String
InitialPath = ThisWorkbook.Path
Dim rs As Integer
rs = MsgBox("ファイルを削除します。", vbCritical + vbOKCancel, "削除の確認")
If rs = vbOK Then
Dim sPath As Variant
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "削除するファイルを選択してください"
.InitialFileName = InitialPath
.AllowMultiSelect = True
If .Show = True Then
ReDim filePath(0)
For Each sPath In .SelectedItems
If filePath(0) <> "" Then
ReDim Preserve filePath(UBound(filePath) + 1)
End If
filePath(UBound(filePath)) = sPath
Next
Call MoveDustbox(filePath)
Else
MsgBox "削除をキャンセルしました。", vbInformation
.Execute
End If
End With
End If
End Sub
Sub MoveDustbox(vPath As Variant)
Dim s As Variant
Dim objShell As Object
Set objShell = CreateObject("Shell.Application")
On Error Resume Next
If Not IsArray(vPath) Then
objShell.Namespace(10).MoveHere (vPath)
DoEvents
Application.Wait Now + TimeValue("0:00:01")
Else
For Each s In vPath
objShell.Namespace(10).MoveHere (s)
DoEvents
Application.Wait Now + TimeValue("0:00:01")
Next
End If
Set objShell = Nothing
End Sub
No.1
- 回答日時:
回答サンプルはあとで
回答ではありませんが確認の為投稿します
なんか同じようなご質問を繰り返しをあちらこちらで見かけるけれど
一体どのような事をなさりたいのでしょうか・・・
実行ブックから相対パスのファイルの削除は落ち着いたようですが・・・
実際削除と言っても色々あります
対象の選択
あ msoFileDialogFilePicker や msoFileDialogFolderPicker
い 絶対パス や 相対パス
削除:
a 文字通り元に戻せない削除
b ゴミ箱に入れる削除
(対象(アドレス)によりゴミ箱に入らず結果aになる場合があります)
削除時の確認
i アラートは出さない
ii アラートを出す
処理は何が判り易いですか
①VBA Killステートメント (aになる)i , ii
②FSO DeleteFileメソッドなど(読取専用ファイルを削除できるa b) i,ii
③Shell Namespace MoveHere i,ii や・・・
InvokeVerb メニュー操作なので ii になります・・・
ここのところの回答にはMoveHereは無いようですが色々な方法のサンプル提示があるように思います
いくら理解しないで組み立てて使うに徹していても 解らなくなっているのではないかと思います・・が
同じような処理は幾ついるのでしょう・・・
考察してまとめてみてはいかがでしょう
余談 どうでも良い事ですが
回答のサンプルをすぐそのままご質問のコードに提示されてもさすがに触りたくないですね
私が書いたものでも他のサイトにそのまま動かない等と掲示されるのを見ると回答する気にならなくなるのは私だけでしょうか
回答した処理をそのまま使うのは まぁ良いとして問題があった時には
回答者の返信追加を待つなり、解決もしていないのに適当にBAで閉じたり
言っても仕方ないでしょうけれど
3,4年になると思いますが折角VBAに触れる機会があるのに覚えないなんて勿体ないと思いますよ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/07 08:37
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/07/13 12:31
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
彼女の過去の恋愛に嫉妬してし...
-
iCloud for Windowsをアンイン...
-
CSVファイルの特定行の削除
-
【VBA】フォルダ内の複数Excel...
-
VBA ファイル一覧を取得して全...
-
VBでbasファイルのインポート、...
-
batでファイル名を変更したい(...
-
xlsファイルが開かない。
-
mediaplayerの取り込みフォルダ...
-
WINDOWS CMDからゴミ箱のファ...
-
大切な文書を失って、大変困っ...
-
Excel: ファイル名になぜ、[...
-
共有エクセルファイルでのユー...
-
[Unity]シーンファイルの中が消...
-
「このファイルを開く前に常に...
-
パスワード付きmp3ファイルにつ...
-
エクセルVBA 実行時エラー'...
-
DLしたアプリに禁止マーク
-
svnadmin loadをするとエラーする
-
DVD書き込みソフトについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの特定行の削除
-
[Unity]シーンファイルの中が消...
-
Excel: ファイル名になぜ、[...
-
彼女の過去の恋愛に嫉妬してし...
-
iCloud for Windowsをアンイン...
-
vbsからのExcelマクロ呼び出し...
-
FTPのgetとputの使いわけ。
-
WINDOWS CMDからゴミ箱のファ...
-
ファイルが移動してもリンクの...
-
EXCELVBAにて文字列にして「01...
-
複数のExcelファイルにある同名...
-
このファイルは外部のエディタ...
-
自動で.xlsを閉じて指定フォル...
-
docxをmht形式で保存したファイ...
-
mediaplayerの取り込みフォルダ...
-
VBAにおいて、ファイルの移...
-
エクセルのファイル:「自分」が...
-
エクセル保存終了で一時ファイ...
-
ノーツの添付ファイルの場所を...
-
共有エクセルファイルでのユー...
おすすめ情報
質問文に誤りがありました
作業ブック内の指定フォルダを削除出来る方法を詳しいコードを教えてください。
です よろしくお願いします
回答ありがとうございます
前置きは割愛させて頂き
私のやりたい事は
作業フォルダの中にある不要のフォルダを
出来れば複数選択して削除したいです
その時に メッセージボックスが表示されて
okの時は マクロが実行し キャンセルの時はマクロは実行されません
マクロが実行された時には
不要フォルダをctrl+マウスで指定し
その後 okをクリックしてフォルダが削除されます その時に警告文等は一切表示されないで削除が完了します
マクロが実行される事は出来るだけクリックの回数を減らしたマクロになってしたいです
このような希望ですが
ご理解頂けましたでしょうか?
何卒宜しくお願いします
質問に載せた
ファイル削除マクロが理想です
このような感じでフォルダも削除したいです
フォルダは完全に削除で構いません
なにぶん歳をとってからの作業なので
色々とご迷惑をお掛けしして申し訳ありませんが
よろしくお願いします
ありがとうございます
何時も助けて頂き感謝致します
親切に教えて頂き又丁寧に対応して頂けました事を改めてお礼いたします
早速試してみます
お礼を送る事ができませんでしたので
補足にてお送りいたします