この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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
【お題】 ・世界最古のコンビニについて知ってる事を教えてください
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
Vba ファイル書き込み時に書き込みエラーを回避する方法を教えてください
Visual Basic(VBA)
-
時間短縮のために、テキストファイルの入出力をメモリを使って出来ないですか?
Visual Basic(VBA)
-
IF文、条件分岐の整理方法
Visual Basic(VBA)
-
-
4
VBAなくなるの?
Visual Basic(VBA)
-
5
VBAコードのインデント表示
Visual Basic(VBA)
-
6
サブフォルダに格納されているファイルを、ファイル名ごとに条件分岐させたい
Visual Basic(VBA)
-
7
pdfファイルの複数添付 引数の型
Visual Basic(VBA)
-
8
Excel VBA 選択範囲の罫線色の変更プロージャの動作速度の改善について
Visual Basic(VBA)
-
9
ExcelVBAマクロで実行した時の疑問
Visual Basic(VBA)
-
10
VBA コードどこがおかしいですか?
Visual Basic(VBA)
-
11
VBA一覧取得 再投稿
Visual Basic(VBA)
-
12
Excel_VBAについて質疑です。(for~next)
Visual Basic(VBA)
-
13
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
14
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
15
VBA SaveChanges 上書きされない
Visual Basic(VBA)
-
16
エクセルVBAコードで教えて下さい!
Visual Basic(VBA)
-
17
VBA初心者です。次のVBAコードで、17行目を削除したいのですがうまく動きません 改善策を教えてく
Visual Basic(VBA)
-
18
Sub 要具ライフ() ActiveSheet.Cells.Find(what:=TOPゴム")."
Visual Basic(VBA)
-
19
Word VBA MSGBOX 内で降順表示
Visual Basic(VBA)
-
20
VBA 複数条件の分岐処理の上手な方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
セル色なしの行一括削除
-
ExcelVBAを使って、値...
-
VBA初心者です。次のVBAコード...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelのプルダウンで2列分の情...
-
VBA ユーザーフォーム ボタンク...
-
Excel VBA、 別ブックの最終行...
-
特定の文字を条件に行挿入とそ...
-
VBAでセルをクリックする回...
-
実行時エラー438 オブジェクト...
-
VBA実行後に元のセルに戻りたい
-
VBA初心者です。結合セルを保持...
-
【VBA】指定したセルと同じ値で...
-
TODAY()で設定したセルの日付...
-
任意フォルダから画像をすべて...
-
Excel2003 複数セル1列の入力済...
-
VBAコマンドボタンを押すたびに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
【Excel VBA】指定行以降をクリ...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
【Excel】指定したセルの名前で...
-
Excelシートのあるセルから値を...
-
特定の文字を条件に行挿入とそ...
-
連続する複数のセル値がすべて0...
-
セル色なしの行一括削除
-
指定した条件で行セルを非表示...
-
vba 隣のセルに値がある行だけ...
-
Application.Matchで特定行の検索
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
EXCELのVBA-フィルタ抽出後の...
-
【VBA】指定したセルと同じ値で...
-
”戻り値”が変化したときに、マ...
おすすめ情報