このvbaどこが間違ってるでしょうか?条件合ってる気がするのですが指定ファイルがないと出ます。
Excelファイル名
・ZAX0278A-11_4U07_MG-001486KED_20240727_OK
・C1セル;ZAX0278A-11 ・F1セル;4U07 ・A6セル以降;1486KED
Sub SearchAndListFiles()
Dim ws As Worksheet
Dim outputWs As Worksheet
Dim folderPath As String
Dim searchPattern As String
Dim fileName As String
Dim folderName As String
Dim filePath As String
Dim cell As Range
Dim searchStr As String
Dim baseFolder As String
Dim formattedCellValue As String
' シートの設定
Set ws = ThisWorkbook.Sheets("Sheet1")
Set outputWs = ThisWorkbook.Sheets("出荷時設定")
' セルの値を取得
Dim C1 As String, F1 As String
C1 = ws.Range("C1").Value
F1 = ws.Range("F1").Value
' C1に基づいて検索するフォルダーを決定
If C1 = "ZAX0278A-11" Then
folderName = "ハンファ"
ElseIf C1 = "ZAX0277A-11" Then
folderName = "汎用"
Else
MsgBox "C1セルの値が無効です。"
Exit Sub
End If
' ベースフォルダーパスを設定(必要に応じてベースパスを調整)
baseFolder = "C:\BaseFolder\" & folderName & "\"
' A列の6行目から下のセルをループ
For Each cell In ws.Range("A6:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
' A列のセル値を6桁になるように変換
formattedCellValue = Format(Mid(cell.Value, 1, Len(cell.Value) - 3), "000000") & Right(cell.Value, 3)
' 検索パターンを生成
searchPattern = "*" & C1 & "_" & F1 & "_*-" & formattedCellValue & "*OK*.xlsx"
' パターンに一致するファイルを検索
fileName = Dir(baseFolder & searchPattern)
' ファイルが見つかった場合
If fileName <> "" Then
Do While fileName <> ""
' 見つかったファイル名を「出荷時設定」シートに書き込む
outputWs.Cells(outputWs.Cells(outputWs.Rows.Count, "A").End(xlUp).Row + 1, 1).Value = fileName
' 次のファイル名を取得
fileName = Dir()
Loop
Else
MsgBox "ファイルが見つかりませんでした: " & searchPattern
End If
Next cell
MsgBox "検索が完了しました。"
End Sub
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
VBAで比較処理をしているので
ファイルが見つかりませんと言う結果なら 実際にDir関数で見つけられないのでしょう
凡そ、スペースの混入、文字種の相違、半角全角なのでしょうけれど・・・
baseFolder = "C:\BaseFolder\" & folderName & "\" の書き間違いとか
ファイル名に自身があるのなら パスが架空のフォルダ名になっているとか・・(タイポなど)
フォルダパスが間違っているのかファイル名が間違っているのか、
コードが間違っているのか セルの値が間違っているのか
どうあるべきなのかは分かりませんね
良く確認してみて・・・
フォルダパスのみを確認するには
If Dir("C:\BaseFolder\" & folderName, vbDirectory) <> "" Then
Debug.Print "なし"
Else
Debug.Print "なし"
End If
とか・・・
質問と違うところで
実際にどうなのか分からないけれど
Loop の下に Exit For は要らないの?
それともフォルダパスの取得位置を間違えているとか・・・
No.3
- 回答日時:
No2です。
fileName = Dir(baseFolder & searchPattern)
でファイルの検索を行っているので、
見つからない場合の
MsgBox "ファイルが見つかりませんでした: " & searchPattern
の行の下に
MsgBox (baseFolder & searchPattern)
を追加して、検索内容に一致したファイルが存在するか否かを確認されてはいかがでしょうか。
No.2
- 回答日時:
こちらで動作確認すると、
「検索が完了しました。」が表示されますので、マクロは正しく動作しています。
①Sheet1のC1,F1の内容、A6の内容の確認
②C:\BaseFolder\ハンファ の下に
ZAX0278A-11_4U07_MG-001486KED_20240727_OK.xlsx
が存在することの確認(拡張子も確認)
を行ってください。
返信ありがとうございます
コード前に書いてある条件はExcel名をコピーして貼り付けて、セル値もそのまま貼り付けて質問していますのでそこが間違ってることは無いと思いますがファイルが見つかりませんになるのでどこかが条件設定が間違っているのかと思っています

No.1
- 回答日時:
こんばんは
>条件合ってる気がするのですが指定ファイルがないと出ます。
「気がする」ではなく、実際に使用している値をチェックしてみれば、直接の原因がわかるのではないでしょうか?
MsgBox baseFolder & searchPattern
とか・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA 1 2024/02/03 22:51
- Excel(エクセル) VBA Private Sub Worksheet_Changeで 1 2024/05/01 16:59
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBA一覧取得 再投稿 1 2024/05/25 12:28
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
VBAでセル同士を比較して色付け
-
i=cells(Rows.Count, 1)とi=cel...
-
連続する複数のセル値がすべて0...
-
エクセルvbaで、別シートの最下...
-
DataGridViewの各セル幅を自由...
-
Excel VBA、 別ブックの最終行...
-
【Excel VBA】指定行以降をクリ...
-
VBAでセルをクリックする回...
-
Excel VBA マクロ ある列の最終...
-
範囲内で最大値を見つけ、その...
-
DataGridViewで列、行、セルの選択
-
vb.netによるEXCEL値取得
-
Excel VBAで、 ヘッダーへのセ...
-
EXCELで変数をペーストしたい
-
ExcelのVBAで数字と文字列をマ...
-
スプレッドシートの数値列に対...
-
Excelのプルダウンで2列分の情...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
特定のセルが空白だったら、そ...
-
VBA実行後に元のセルに戻りたい
-
【Excel VBA】指定行以降をクリ...
-
任意フォルダから画像をすべて...
-
【Excel】指定したセルの名前で...
-
VBAでセルをクリックする回...
-
【VBA】シート上の複数のチェッ...
-
EXCELのVBA-フィルタ抽出後の...
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
”戻り値”が変化したときに、マ...
-
ExcelのVBAで数字と文字列をマ...
-
VBA ユーザーフォーム ボタンク...
-
Excel VBA マクロ ある列の最終...
-
Excel VBA、 別ブックの最終行...
おすすめ情報

