
ひとつのフォルダの中にファイルが複数あります。これらのファイルを開かずに文字列を検索し、検索対象の文字がある行をまどめてひとつのファイルに抽出したいです。
例:Aフォルダ内にファイル1、ファイル2、ファイル3、、、と複数のファイルがある。ファイルのフォーマットはすべて同じでデータのみが異なる。ファイルにはシートは一つのみ。
ファイルのイメージは
A B C D
1行目 名称 価格 味 評価 ←全ファイル共通
2行目 いちご 100円 おいしい A
3行目 りんご 200円 まずい C
・
・
・
これらのファイルから、例えば「いちご」という文字が含まれているセルがある行を抽出して一覧を作りたいです。
もし可能であれば、検索条件として、
一行に 「いちご」かつ「A」を含む や「いちご」または「おいしい」を含む など の絞込みができる機能があれば助かります。
マクロは初心者のため、自分でこのようなものを作ることができません。どうぞお知恵をおかしください。よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
No.2のyorisinです。
バッチはExcelではなく、超お手軽なプログラムと思ってください。
たとえば今回の例では、アスタリスク(*)の中をメモ帳にコピーして、
拡張子を[bat]で保存すればこれでプログラムの完成です。
********************
@echo off
echo 検索結果>result.csv
type %2 | find "%1">>result.csv
echo 検索終了
@pause
********************
このプログラムを動かす場合には、コマンドプロンプトを開き、
(スタートメニュー→プログラム→アクセサリ→コマンドプロンプト)
黒い画面に保存したバッチファイル(拡張子=bat)をドラッグアンドドロップ
→半角スペースを入れて検索したい文字を入力
→半角スペースを入れて検索対象のCSVファイルをドラッグアンドドロップ
→エンターキー
で、自動的に検索したい文字列を含む行を出力します。
No.2
- 回答日時:
ファイルをCSVファイルで出力し、バッチで検索してみてはどうでしょうか?
このようなバッチで指定した文書のある行だけを別ファイルに出力できます。
@echo off
echo 検索結果>result.csv
type %2 | find "%1">>result.csv
echo 検索終了
@pause
上記内容のバッチを、作成し検索するファイルと同じ場所に置いて、
コマンドプロンプトから
[バッチファイル名] [検索文字列] [検索するファイル名]
とすれば、result.csvに検索文字列の含まれる行全てが出力されます。
ExcelデータのCVS出力は[ファイル名を指定して保存]から選択できます。
ご親切にありがとうございました。
バッチというのがよくわからないため私にはちょっと難しいようです。もっとエクセルを勉強してみたいと思います。
No.1
- 回答日時:
開かずに取得する方法を存じませんので、開いたファイルが見えないようにして取得してみました。
「いちご」はA列にあるものとしています。
まとめるファイルの標準モジュールにコピペしてやってみてください。
まとめるファイルは取得されるファイルと同一フォルダに保存してください。
Sub test01()
Application.ScreenUpdating = False '画面更新を一時停止
Set mb = ThisWorkbook 'このブックをmbとする。
myfdr = ThisWorkbook.Path
fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索
Do Until fname = Empty '全て検索
If fname <> mb.Name Then 'ブック名がこのブックの名前でなければ
Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。
With wb.ActiveSheet 'wbの開かれたシートについて
x = .Cells(Rows.Count, "A").End(xlUp).Row 'A列最終行をxに代入
For i = 1 To x '1~xまで繰り返し
If .Cells(i, "A").Value = "いちご" Then '値がヒットしたら
n = n + 1
.Rows(i).Copy 'コピー
mb.Sheets(1).Rows(n).PasteSpecial 'このブックの最初のシートに貼り付け
Application.CutCopyMode = False
End If
Next i
End With
wb.Close (False) '保存の有無を聞かずに保存しないで閉じる
End If
fname = Dir 'フォルダ内の次のExcelブックを検索
Loop '繰り返す
Application.ScreenUpdating = True '画面更新一時停止を解除
Set mb = Nothing
Set wb = Nothing
End Sub
お丁寧にありがとうございました。参考にさせていただきます。
質問の書き方が悪かったのですが、検索する語はいちご以外にもいろいろあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのファイルにリンクを貼る方法 4 2023/06/30 11:09
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
- フリーソフト テキストファイル内を検索したい 1 2022/06/01 08:33
- Visual Basic(VBA) vbaサブフォルダーをワイルドカードで取得したい 2 2022/11/15 08:04
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
このQ&Aを見た人はこんなQ&Aも見ています
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
【至急】エクセルで複数のファイルから文字列を検索、行全てを抽出する
Excel(エクセル)
-
ブックを開かずに、フォルダ内にある複数ブックの、特定セルの値を抽出した
Excel(エクセル)
-
-
4
csvファイルを開かずに文字を検索し行を抽出したい
Visual Basic(VBA)
-
5
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
6
ファイルを閉じたままの外部参照で最終行の行数取得
Visual Basic(VBA)
-
7
バッチファイルで特定の文字列の抽出
その他(Microsoft Office)
-
8
Excelのセルの内容をコマンドプロンプトで実行
Visual Basic(VBA)
-
9
フォルダ内の複数ファイルから、特定セルだけを抽出し、並び替えて集約したい
Excel(エクセル)
-
10
EXCELファイルに誰がアクセスしたかを見たい
Access(アクセス)
-
11
Excel内での検索結果をシートに出力したい
Excel(エクセル)
-
12
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
13
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
14
バッチファイル 指定行の切り出し
その他(Microsoft Office)
-
15
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
16
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
17
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
18
アウトルックの受信トレーの赤い「!」は何の意味?
マルウェア・コンピュータウイルス
-
19
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
20
バッチ終了時にDOS窓を閉じるコマンド
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
複数のtxtの特定部分を抽出し、...
-
エクセルでファイルを開かずに...
-
エクセルで他のファイルのセル...
-
CPU使用率が100%となっ...
-
Excel 2枚目のブックが開かな...
-
パワーポイントをエクセルファ...
-
エクセルで「500時間」を「何日...
-
エクセル 列の最大数はIV?
-
EXCELで上書き保存しないと反映...
-
エクセルにクリックすると指定...
-
エクセルのカメラ機能を、700個...
-
エクセルを閉じた時、ノッペラ...
-
いきなりPDFでPDFファイルを開...
-
エクセルの添付ファイルに記入...
-
エクセルを上書き保存したのに...
-
メール添付されているファイル...
-
エクセルの塗りつぶしの色が勝...
-
「ジャストカルク」を使用中の方へ
-
エクセル文書を保存したらメモ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
CPU使用率が100%となっ...
-
Excel 2枚目のブックが開かな...
-
エクセルで他のファイルのセル...
-
エクセルのファイルが開けない
-
複数のtxtの特定部分を抽出し、...
-
マクロで別ファイルのシートコ...
-
PhotoshopでExcelのファイルが...
-
エクセルマクロ 数式【VLOOKUP...
-
VBAで集計元のファイル名を取得...
-
MATLABでcsvファイルを読み込も...
-
エクセルマクロ(vba)のFSO.Open...
-
Excel2000でフォルダを移動する...
-
文字しか入っていないのにエク...
-
複数シートを持つExcelファイル...
-
フォルダー内の特定excelファイ...
-
ファイル比較ツール
-
パワーポイントをエクセルファ...
-
エクセルで「500時間」を「何日...
おすすめ情報