この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
- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
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も見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
googleの検索で、自分のブログが表示されるようにしたいです。やり方を教えて下さい。
SEO
-
逆コンパイルと逆アセンブルの違いはなんですか
C言語・C++・C#
-
IF文、条件分岐の整理方法
Visual Basic(VBA)
-
-
4
これて逆じゃないですか?
C言語・C++・C#
-
5
サブフォルダに格納されているファイルを、ファイル名ごとに条件分岐させたい
Visual Basic(VBA)
-
6
文系のSE志望です。プログラミングを今から習得したいのですが、初めて学ぶのにオススメの言語があれば教
その他(プログラミング・Web制作)
-
7
時間短縮のために、テキストファイルの入出力をメモリを使って出来ないですか?
Visual Basic(VBA)
-
8
-1234 を (1234) と表記する由来は?
Excel(エクセル)
-
9
プログラマーは誘惑にさらされる人生?
その他(プログラミング・Web制作)
-
10
Vba ファイル書き込み時に書き込みエラーを回避する方法を教えてください
Visual Basic(VBA)
-
11
システムエンジニアの適正について
C言語・C++・C#
-
12
西暦や和暦の表示をyyyymmdd表示へ変更をしたい
Excel(エクセル)
-
13
Microsoft1Officeの互換ソフトについて
Excel(エクセル)
-
14
自動入力で今月はMONTH(TODAY())で良いのですが、翌月はどのようにすれば良いでしょうか。
Excel(エクセル)
-
15
インクリメント演算子のみを用いて、下に表示されるようにプログラムします 99 100 102 103
C言語・C++・C#
-
16
プログラミング言語で、使えるクラス沢山ありますが、以下のようなクラスってなんて名前ですか? 例えば1
PHP
-
17
どちのほうがすきですか?
C言語・C++・C#
-
18
プログラマーと学歴の関係性について
その他(プログラミング・Web制作)
-
19
過剰なオブジェクト指向脳からの脱却について
その他(プログラミング・Web制作)
-
20
40代後半でゼロからのプログラム業界への転職
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの間違い教えて下さい
-
【Excel VBA】指定行以降をクリ...
-
ExcelVBAを使って、値...
-
【Excel】指定したセルの名前で...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
EXCELで変数をペーストしたい
-
EXCELのVBA-フィルタ抽出後の...
-
Excelで指定した日付から過去の...
-
エクセルマクロでアニメを作る...
-
【VBA】指定したセルと同じ値で...
-
Excelのプルダウンで2列分の情...
-
if関数とifs関数は組み合わせる...
-
指定した条件で行セルを非表示...
-
結合セルを含む列の非表示方法
-
Excel ユーザーフォームをモー...
-
連続する複数のセル値がすべて0...
-
EXCEL VBA For to
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
【Excel】指定したセルの名前で...
-
エクセルVBAでコピーして順...
-
Excelのプルダウンで2列分の情...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
EXCELで変数をペーストしたい
-
Excel VBA、 別ブックの最終行...
-
【VBA】指定したセルと同じ値で...
-
Excel vbaで特定の文字以外が入...
-
VBAでセルをクリックする回...
-
連続する複数のセル値がすべて0...
-
特定の文字を条件に行挿入とそ...
-
DataGridViewの各セル幅を自由...
-
指定した条件で行セルを非表示...
-
エクセルのマクロについて教え...
おすすめ情報