したいのです。
フォルダ内に集計用マクロファイルと個々人用の複数の回答ファイルがあります。
回答ファイル名は、「AB1234.xls」と数字(ID)の部分は個々人で異なります。
集計用マクロファイルには、個々人のIDが記載されており、「*1234*.xls」とワイルドカードで集計する様にしています。
回答ファイルには「AB1234.xls」、「AB1234rev1.xls」、「AB1234rev2.xls」等が有る場合があり、集計前に重複ファイルを検索して処理を中断したいのです。
コードは下記の通りですが、重複ファイルのメッセージ表示が次の様になってしまいます。
AB1234.xls
AB1234rev1.xls
AB1234.xls
AB1234rev2.xls
AB5678.xls
AB5678rev1.xls
この表示を次の様にしたいのですが、どう手直しすれば宜しいでしょうか。
宜しくご回答願います。
AB1234.xls
AB1234rev1.xls
AB1234rev2.xls
AB5678.xls
AB5678rev1.xls
------------------------------------
ThisWorkbook.Sheets(strMonth).Activate 'マクロファイルのシート名は4月~3月の12枚です。
MaxRow = Range("B4").End(xlDown).Row 'B4から下方に個々人のIDが記載されています。
For Y3 = 4 To MaxRow
strID = Cells(Y3, 2)
Cells(1, 6) = "プリチェック中"
i = 0
Target = Dir(ThisWorkbook.Path & "\" & "*" & strID & "*.xls", vbNormal)
msg1 = Target
Do While Target <> ""
i = i + 1
If i = 1 Then GoTo Label2
If i >= 2 Then
msg2 = msg2 & vbCrLf & vbCrLf & msg1 & vbCrLf & Target
Flag = Flag + 1
'ElseIf i = 1 Then
'msg1 = ""
End If
Label2:
Target = Dir()
Loop
Next Y3
If Flag >= 1 Then
Cells(1, 6) = ""
msg1 = "下記のファイルが重複しているので処理を中止します。" & msg2
MsgBox msg1
Exit Sub
Else
End If
No.2ベストアンサー
- 回答日時:
自分なりに整理して書き直してみました。
ThisWorkbook.Sheets(strMonth).Activate 'マクロファイルのシート名は4月~3月の12枚です。
MaxRow = Range("B4").End(xlDown).Row 'B4から下方に個々人のIDが記載されています。
msg1 = ""
For Y3 = 4 To MaxRow
strID = Cells(Y3, 2)
Cells(1, 6) = "プリチェック中"
Target = Dir(ThisWorkbook.Path & "\" & "*" & strID & "*.xls", vbNormal)
msg2 = ""
i = 0
Do While Target <> ""
i = i + 1
msg2 = msg2 & Target & vbCrLf
Target = Dir()
Loop
If i > 1 Then msg1 = msg1 & msg2 & vbCrLf
Next Y3
If msg1 <> "" Then
Cells(1, 6) = ""
MsgBox "下記のファイルが重複しているので処理を中止します。" & vbCrLf & msg1
Exit Sub
End If
luka3さま
ご回答ありがとうございます。
コードをコピペして、期待通りの結果でした♪
整理(整然)された読みやすいコードのご回答で助かりました。
コードを見て感動しました!
またご回答くださいませ♪<(_ _)>
No.1
- 回答日時:
> msg2 = msg2 & vbCrLf & vbCrLf & msg1 & vbCrLf & Target
ファイル検出する度に、msg1(最初のファイル)と Target(検出したファイル)追加してますよね。2つめの時だけmsg1追加するとか・・・
if i = 2 Then msg2 = msg2 & vbCrLf & vbCrLf & msg1
msg2 = msg2 & vbCrLf & Target
> 'msg1 = ""
試行錯誤の跡?もう一息がんばってほしかった(--;
ap_2さま
深夜のご回答ありがとうございます。
先のコード作成に3時間、ご察しの通り試行錯誤に2時間弱。。。
何が何だか分からなくなり質問した次第です。
またご回答下さいネ♪
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像読み込み時のOutOfMemory
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
C言語関数違いについて。
-
アドレス帳WABファイルをサンダ...
-
テキストファイルの最終行を削...
-
VC++の外部依存関係
-
「VBScript」ADODB.Streamにお...
-
SGファイルって何ですか?
-
VBに、Cのincludeのようなもの...
-
分割コンパイルの#defineについて
-
C言語のfopenについて教えてく...
-
PHPのソースの追いかけ方
-
マウスポインタの変更
-
エクセルVBAでフォルダ内の重複...
-
fopenできる上限の変更
-
リエントランスな関数
-
2つのテキストファイルのマー...
-
VBAにてEXCEL以外のファイル(テ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
dataファイルをxtxファイルにす...
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
大きいサイズのテキストファイ...
-
テキストファイルの最終行を削...
-
ドラッグアンドドロップでファ...
-
グローバル変数のよくない使い...
-
CSVファイルへの保存の際、デー...
-
ファイルの結合
-
SGファイルって何ですか?
-
VBに、Cのincludeのようなもの...
-
XMLファイルの表示について
-
分割コンパイルの#defineについて
-
ハッシュの計算時間について
-
バッチで118項目のCSVを処理し...
-
RPGでファイル名(もしくはレコ...
-
Excelマクロでの再読込み方法
-
C言語のfopenについて教えてく...
-
COM相互運用機能のON,OFFによる...
おすすめ情報