リストボックスにフォルダ名を表示させるマクロを作成しました。
すると、フォルダ名の他にExcelファイルも表示されてしまいます。
下記マクロの’ファイルが見つからなくなるまで繰り返す に「該当の
Excelファイル名」を入れれば表示されなくなることは分かるのですが、該当のExcelファイル名が固定とは限らないので、「Excelファイル(.xlsm)ならどのようなファイル名であっても表示させない」といったようにしたいです。
どのようにすれば良いかご教授いただけないでしょうか?
作成したマクロ↓
Private Sub UserForm_Initialize()
Dim S_folderPath As String '該当のフォルダ=このブックと同じフォルダ
Dim FileName As String
Me.TextBox1 = ThisWorkbook.Path & "\"
S_folderPath = Me.TextBox1.Text
UserForm1.Caption = "フォルダ名を選択して下さい"
'ファイル名(フォルダ名)の取得
FolderName = Dir(S_folderPath, vbDirectory) '←リストボックスに表示させるフォルダ名
'ファイルが見つからなくなるまで繰り返す
Do While FolderName <> ""
If FolderName <> "." And FolderName <> ".." Then
ListBox1.AddItem FolderName
End If
FolderName = Dir()
Loop
End Sub
No.2
- 回答日時:
以下のようにしてください。
If FolderName <> "." And FolderName <> ".." And LCase(Right(FolderName, 5)) <> ".xlsm" Then
FileSystemObjectを使用すると、指定フォルダ内のすべてのサブフォルダ
を簡単に取得できます。(.とか..とか、及び他のファイルを最初から除いて取得できますので、提示された例のようにそれらをはじく必要がありません)
以下サンプルです。
s_folderpathにあなたが取得したい指定フォルダを記述してください。
イミデイとウインドウに結果が表示されます。
Public Sub 指定フォルダ内の全サブフォルダ取得()
Dim wFSO As Object
Dim wfolder As Object
Dim wfolders As Object
Dim disp_folder As Object
Dim s_folderpath As String
Set wFSO = CreateObject("Scripting.FileSystemObject")
s_folderpath = "d:\goo\excel\goo番外"
Set wfolder = wFSO.GetFolder(s_folderpath)
Set wfolders = wfolder.SubFolders
For Each disp_folder In wfolders
Debug.Print disp_folder.name
Next
End Sub
回答ありがとうございます。
FileSystemObjectを用いれば指定しないで済むのでよさそうですね。そちらの方法も試してみます。
また、LCase(Right(FolderName, 5))はどのような意味か教えていただくことはできますでしょうか?インターネットで検索しましたが、回答が得られなかったので気になっています。
No.3ベストアンサー
- 回答日時:
>LCase(Right(FolderName, 5))
FolderNameの右側5桁が".xlsm"であるかを判定します。
FolderNameが"?????.xlsm"であれば、この条件にマッチします。(?は任意の文字)
但し、FolderNameが"?????.XLSM"のケースもマッチさせる必要があります。
まず、FolderNameの右側5文字を取り出します。
Right(FolderName, 5)がそれになります。
次に、その文字を強制的に小文字に変換します。(.XLSMは.xlsmに変換される)
LCase(対象となる文字)がそれになります。
そうすると、xlsmもXLSMも処理したことになります。
これは
dim name1 as String
dim name2 as String
name1 = Right(FolderName,5,1)
name2 = Lcase(name1)
if If FolderName <> "." And FolderName <> ".." And name2 <> ".xlsm" Then
としても同じ結果になります。
迅速かつとても分かりやすい回答をありがとうございます。
このようなLCase関数の使い方は初めてでしたので、参考になりました。
こちらも今後のコード作成に利用したいと思います。
本当にありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
ファイル名と同名のフォルダを...
-
フォルダにリンクを貼りたい
-
ディレクトリ名変更してコピー...
-
保存先のフォルダ名を指定した...
-
平日出力されるログを月次処理...
-
pythonでDepixを起動
-
フォルダ選択ダイアログ:ネッ...
-
VBA 最新のフォルダ取得
-
EXPLORERで開いているフォルダ...
-
Excel VBA マクロ リストボックス
-
エクセルマクロで指定フォルダ...
-
Access VBA で フォルダ権限...
-
エクセルのデータをメモ帳に貼...
-
Pythonの作業環境・作業フォル...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
指定フォルダからファイルを全...
-
ツリービューを使って、エクス...
-
フォルダのサイズを一覧にした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
フォルダ内のPDFファイル名を変...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
保存先のフォルダ名を指定した...
-
多量のファイルをフォルダに自...
-
パス名に2バイト文字(マルチバ...
-
ディレクトリ名変更してコピー...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
vbsで選択ダイアログを表示した...
おすすめ情報