この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も見ています
-
【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
ロボットの住む世界で流行ってる罰ゲームとは?
-
Vba ファイル書き込み時に書き込みエラーを回避する方法を教えてください
Visual Basic(VBA)
-
時間短縮のために、テキストファイルの入出力をメモリを使って出来ないですか?
Visual Basic(VBA)
-
IF文、条件分岐の整理方法
Visual Basic(VBA)
-
-
4
VBAなくなるの?
Visual Basic(VBA)
-
5
VBAコードのインデント表示
Visual Basic(VBA)
-
6
pdfファイルの複数添付 引数の型
Visual Basic(VBA)
-
7
サブフォルダに格納されているファイルを、ファイル名ごとに条件分岐させたい
Visual Basic(VBA)
-
8
Excel VBA 選択範囲の罫線色の変更プロージャの動作速度の改善について
Visual Basic(VBA)
-
9
ExcelVBAマクロで実行した時の疑問
Visual Basic(VBA)
-
10
Excel_VBAについて質疑です。(for~next)
Visual Basic(VBA)
-
11
VBA コードどこがおかしいですか?
Visual Basic(VBA)
-
12
VBA一覧取得 再投稿
Visual Basic(VBA)
-
13
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
14
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
15
VBA初心者です。次のVBAコードで、17行目を削除したいのですがうまく動きません 改善策を教えてく
Visual Basic(VBA)
-
16
VBA SaveChanges 上書きされない
Visual Basic(VBA)
-
17
エクセルVBAコードで教えて下さい!
Visual Basic(VBA)
-
18
エクセルVBA
Visual Basic(VBA)
-
19
【ExcelVBA】値を変更しながら連続でPDFを作成し,ファイル名を自動で付して出力するコード
Visual Basic(VBA)
-
20
-1234 を (1234) と表記する由来は?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
【Excel VBA】指定行以降をクリ...
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
VBSでエクセル内の行数を取得す...
-
特定の文字を条件に行挿入とそ...
-
連続する複数のセル値がすべて0...
-
vba 隣のセルに値がある行だけ...
-
VBAでセル同士を比較して色付け
-
EXCELのVBA-フィルタ抽出後の...
-
Excelのプルダウンで2列分の情...
-
VBA コピーして次の値まで貼り...
-
Book1のセルへ別Book(Book2)...
-
Excel VBA、 別ブックの最終行...
-
【VBA】指定したセルと同じ値で...
-
DataGridViewでコードで値を入...
-
VBからEXCELのセルの値を取得す...
-
VBA ユーザーフォーム ボタンク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelVBAを使って、値...
-
【Excel VBA】指定行以降をクリ...
-
特定のセルが空白だったら、そ...
-
EXCELで変数をペーストしたい
-
Excelで指定した日付から過去の...
-
VBAの間違い教えて下さい
-
【Excel】指定したセルの名前で...
-
Excelのプルダウンで2列分の情...
-
エクセルVBAでコピーして順...
-
Excel vbaで特定の文字以外が入...
-
Excel VBA、 別ブックの最終行...
-
【VBA】指定したセルと同じ値で...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
VBA初心者です。次のVBAコード...
-
指定した条件で行セルを非表示...
-
VBAでセルをクリックする回...
-
DataGridViewの各セル幅を自由...
おすすめ情報