Cドライブ直下にある「Aフォルダ」の中に フォルダ名:(指定文字1)[スペースを含む任意文字](指定文字2) と命名されたフォルダが存在するか調査するマクロを作成したいのですが、下記のコードでは上手く動きません。正しいコードを教えて下さい。
Private Sub CommandButton1_Click()
'Aフォルダに指定のフォルダが存在するか調査する
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FolderExists("C:\Aフォルダ\指定文字1*指定文字2") = False Then
MsgBox "フォルダはありません"
Else
MsgBox "フォルダはあります"
End If
Set FSO = Nothing
End Sub
No.8ベストアンサー
- 回答日時:
こんにちは
しばらく経っていますが、出来ましたか?
サンプルコード(FileSystemObject)
Sub GetSubFolderPath()
Dim parent_folder As String
Dim folder_name As String
Dim chFolder_path As String
Dim fso As Object, f As Object
Set fso = CreateObject("Scripting.FileSystemObject")
parent_folder = "C:\Aフォルダ"
folder_name = "指定文字1*指定文字2"
On Error Resume Next '親フォルダが存在しない時の対策(手抜き)
If (0 < fso.GetFolder(parent_folder).SubFolders.Count) Then
For Each f In fso.GetFolder(parent_folder).SubFolders
If f.Name Like folder_name Then
chFolder_path = f.Path
Exit For
End If
Next f
End If
If chFolder_path <> "" Then
MsgBox ("あります" & vbCrLf & chFolder_path)
Else
MsgBox ("ありません")
End If
End Sub
対象が複数ある場合は、配列などにパスを納めれば対象を広げて処理が出来ると思います。
指定文字1と指定文字2の間に文字を挟んでいる場合を正確に把握する事がなかなか出来ず、諦めていたところです。
上のコードでやりたい事が実現出来ました。
本当に感謝いたします。
ありがとう御座いました。
No.7
- 回答日時:
No5です
>No6様
なるほどです。
指定文字2が拡張子の後部に合致する可能性までは思い至っておりませんでした。
わざわざお手数をかけてまでご教示いただき、ありがとうございました。
No.6
- 回答日時:
No5様
>vbNormal(属性のないファイル)が正しいでしょう。
>(「通常ファイル」は属性ありと認識しています)
C:\にsampleという名称のフォルダを作り、
そのフォルダ内に、excelでBook1.xlsxを作成し、保存します。
その状態で、以下のマクロを実行すると、「フォルダはあります」
と表示されます。
Book1.xlsxは属性のないファイルなのでしょうか?
Sub sample()
Dim s
Const folderPath = "c:\sample\Book*x"
If Dir(folderPath, vbDirectory) = "" Then s = "せん" Else s = "す"
MsgBox "フォルダはありま" & s
End Sub
No.5
- 回答日時:
No3です
>No4様へ
ご指摘の内容は間違ってはいませんが・・・
>vbNormal(通常ファイル)=0の為、
は正確ではありませんね。
vbNormal(属性のないファイル)が正しいでしょう。
(「通常ファイル」は属性ありと認識しています)
ですので、質問者様が「属性のないファイル」が存在するような環境下で使用する場合には、ご指摘のような事象は発生し得ることになりますが、一般的なフォルダに対して使用することを想定するならば、そのような可能性は相当に少ないものと想像します。
No.4
- 回答日時:
No3のかたへ
Dir関数の設計バグになりますが、
「指定文字1*指定文字2」に該当するフォルダがなくて、
「指定文字1*指定文字2」に該当するファイルが存在する場合、
Dirの結果は""にはなりません。
従って、「フォルダはあります」というメッセージが表示されます。
「フォルダ又はファイルのどちらかかはあります」というメッセージにすれば、動作上は正しいことになりますが、それを質問者の方が望んでいるかどうかは、わかりません。
Dir関数の第2引数は、vbDirectoryの他にvbReadOnlyとかの属性をORで指定できるようになっていますが、vbNormal(通常ファイル)=0の為、
常に、vbNormalが指定されていることになってしまいます。
従って、
Dir(folderPath, vbDirectory) は
Dir(folderPath, vbDirectory+vbNormal)と同じ結果になります。
フォルダだけに限定し、存在チェックを行うなら、
No2のかたのようにするのが妥当かと思います。
No.3
- 回答日時:
こんばんは
指定パスでの、フォルダの有無を調べたいということと解釈しました。
Sub sample()
Dim s
Const folderPath = "C:\Aフォルダ\指定文字1*指定文字2"
If Dir(folderPath, vbDirectory) = "" Then s = "せん" Else s = "す"
MsgBox "フォルダはありま" & s
End Sub
No.2
- 回答日時:
あくまで指定した明確なフォルダが存在するかどうかでしょうから、正規表現みたいにやるなら『Aフォルダ内のサブフォルダ名を順にチェックする』しかないのでは?
初級者レベルですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) 【マクロ】ファイルを古い順に、1個ずつ移動する 1 2022/09/06 20:30
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
ディレクトリ名変更してコピー...
-
フォルダにリンクを貼りたい
-
同一フォルダ内の別ブックから...
-
保存先のフォルダ名を指定した...
-
pythonでDepixを起動
-
windowsでテキストファイルの各...
-
集めたシートのシート名を変更...
-
Excel VBA マクロ リストボックス
-
指定フォルダからファイルを全...
-
エクセルのデータをメモ帳に貼...
-
Pythonの作業環境・作業フォル...
-
フォルダのサイズを一覧にした...
-
あるフォルダの中にあるファイ...
-
フォルダを自分ごと削除
-
エクセル VBAについて教えてく...
-
ExcelのVBA:フォルダ内のファイ...
-
インストール時に、空フォルダ...
-
excelマクロ 冒頭3文字が一致す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
フォルダ内のPDFファイル名を変...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
保存先のフォルダ名を指定した...
-
多量のファイルをフォルダに自...
-
パス名に2バイト文字(マルチバ...
-
ディレクトリ名変更してコピー...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
vbsで選択ダイアログを表示した...
おすすめ情報