先日教えて頂けたマクロがあります、このマクロを実行すると作業ブック内の不要なフォルダを削除できます。
このマクロでは不要なフォルダを一つだけ選択して削除できますが、複数選択して削除出来る方法を詳しいコード共に教えてください。
よろしくお願いします。
マクロ
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
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんにちは
組み込みダイアログボックスでは、フォルダの選択は1つしかできません。
「OK」が押されたら、再度そのフォルダを開いた状態でダイアログを表示し、「Cancel」されるまで繰り返すことで、結果的に複数のフォルダーを選択させることは可能です。
ただし、不特定のユーザが使用するのであれば、このUIは誤解を招く可能性がありますので、わかっている人だけが使う前提でないと、同じものを何度も選択しかねません。
不特定ユーザでも誤解されにくいようにするのなら、1つ選択して「削除しました」までを繰り返すようにすれば間違えはなくなると思いますが、少々うっとおしいUIになりかねません。
他の方法としては、フォームなどのリストに選択フォルダを追加してゆくようなUIも考えられますが、内容からして果たしてそのようなものが必要なのかは疑問です。
一方で、フォルダの削除って、普通にエクスプローラ上でフォルダを選択してDeleteキーを押せばできますし、この操作を知らないユーザも稀でしょう。
わざわざUIを変えてまで同じ内容のことを実現するよりも、VBAからエクスプローラを開いて、後はユーザに任せた方が簡単ではないでしょうか?
どうせ、削除フォルダの選択判断はユーザ任せなんですから、変わりないと言えるでしょう。
フォルダ選択の操作は、ダイアログでもエクスプローラでも変わりませんし、むしろ、エクスプローラの方が見慣れている分、やりやすいかも知れません。
そうすれば、下記程度のもので済んでしまいます。
(さらに言うなら、こんなものが必要なのかどうかすら疑問ですけれど・・)
MsgBox "不要なフォルダを削除してください"
Shell "C:\Windows\Explorer.exe " & ThisWorkbook.Path, vbNormalFocus
※ ↑は、ごく一般的なOSの状態を想定してあります。
No.2
- 回答日時:
通常ダイアログではフォルダの複数選択はできません。
力業やダイアログ風にユーザーフォームで自作するしかないと思います
オブジェクトが必要になりコード提示だけでは動きませんのでコードを所望されても私には気力がありません
回答ありがとうございました。
一つ前の質問に補足が出来なかった為、改めて質問をさせて頂きました。
やはりそうなんですね。
納得出来ました。
いつもありがとうございます。
No.1
- 回答日時:
の
For i = 1 To .SelectedItems.Count
strFiles = strFiles & vbLf & .SelectedItems(i)
Next i
ここがヒントなのでは?(前の質問については見てないですが)
If .Show = -1 Then
For i = 1 To .SelectedItems.Count
folderPath = .SelectedItems(i)
Call MoveDustbox(folderPath)
Next i
Else
かな?
検証はしてません。
検索しただけです。
Dim i As Integer
変数の宣言をお忘れなく。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/07/13 12:31
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Androidアルバムの画像を消去で...
-
ユーザーファイルのAppDa...
-
iPhoneのメモ帳が重いです。メ...
-
起動ドライブ"C"直下に現れた"O...
-
彼氏に盗撮されていました
-
"autorun.inf" を削除する方法
-
MSアクセス VBA クラス...
-
Win7ショートカットアイコ...
-
spoolsv.exeが原因で重い プリ...
-
My Data Sources フォルダについて
-
imepadsv.exeとは?
-
ユーザフォルダー内のフォルダ
-
Data Access Objects(DAO)3.5っ...
-
index.datを削除してもいいか
-
EXCELで1列に番号をつけるには?
-
ウィンドウズ10VIDEO_TS削除が...
-
エクセルのマクロについて教え...
-
アウトルックエクスプレスのフ...
-
WINDOWS.OLDの削除
-
更新プログラムは全部削除して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Androidアルバムの画像を消去で...
-
ユーザーファイルのAppDa...
-
起動ドライブ"C"直下に現れた"O...
-
彼氏に盗撮されていました
-
"autorun.inf" を削除する方法
-
Googleアカウントが削除されて...
-
My Data Sources フォルダについて
-
Win7ショートカットアイコ...
-
グループポリシーの未構成と無...
-
ユーザフォルダー内のフォルダ
-
iPhoneのメモ帳が重いです。メ...
-
MSアクセス VBA クラス...
-
アメブロ 写真の削除
-
Googleドライブに詳しい方に質...
-
XnViewでファイルを削除するとx...
-
Windows 10の[アプリと機能]に...
-
デスクトップ上に、空のフォル...
-
エクセルのマクロについて教え...
-
Windows PowerShellを削除したい
-
Tempフォルダの削除が出来ません!
おすすめ情報