
フォルダの中に複数のCSVファイルが有ります。
これらのファイルを開かずに文字列を検索し、検索対象の文字と完全一致する
文字がある行をまとめてひとつのファイルに抽出する方法を探しています。
例:Aフォルダ内にファイル1、ファイル2、ファイル3、、、と複数のファイルがある。
ファイルのフォーマットはすべてCSV。ファイルにはシートは一つのみ。日付なのですべて異なります。
A B C D E F G H I J K L
加工年月日時分 品種 コード A列 B列 C列D列 E列 F列 G列 本数 作業者
・
・
・
A~Lまであり、Cのコードが指定した検索文字と完全一致するものを抽出したいです。
急ぎの内容の為、VBAやコマンドプロンプトなど、自分なりに色々なサイトにある
プログラムを組み換えようとしましたが初心者の為すぐに理解して応用はとても
無理でした。知恵を貸して頂きたいです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>ファイルを開かずに文字列
CSVファイルに、>シートは一つのみなんて書いているところを見ると、全くCSVやファイル処理のプログラムのことが判ってない。やりたいことを書き連ねて、作ってくださいと丸投げでいっているだけ。
エクセルとCSVは直接の概念的関係はないのだ。CSVはエクセルが出来るもっと昔からあるもんなんだ。
ーー
そういう専用のソフトを探すしかない。テキストエディターでも出来るものがあるかもしれない。
ーーー
ファイルは普通はソフトを「通して開かないと、普通の人には読めない。直接読むには、ダイレクトにディスクを読み書きできるようなことが必要だが。出来る人は少なく普通はしないようになっている。
(1)ある1つの決ったフォルダの中にあるCSVファイルの名前を順次掴むプログランむなど、毎週ぐらい質問に出るし、WEBでも調べたら直ぐ判る。「VBA フォルダ ファイル 掴む(列挙)」など
一例
Sub test02()
Target = "C:\Documents and Settings\XXXX\My Documents\"
Set FS = CreateObject("Scripting.FileSystemObject")
Set Fol = FS.GetFolder(Target)
Set Fil = Fol.Files
For Each fx In Fil
'ファイル名
sfile = fx.Name
If Right(sfile, 4) = ".csv" Then
'ファイル名の書き出し
MsgBox fx.shortname
' MsgBox fx
End If
Next
End Sub
(2)そのCSVファイルを開いて、ReadAllなんてのをすると全文が変数に入る。
「テキストファイル ReadAll」
Sub test01()
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'(9)読み込むファイルのフルパスを編集
strFilePath = "C:\Documents and Settings\XXXX\My Documents\test02.csv"
'(10)ファイルのオープン
Set objInFile = objFileSys.OpenTextFile(strFilePath)
'(11)ファイルのオープンが成功(ファイル有り)のときはErr.Numberが0
If Err.Number = 0 Then
'(12)ファイルの全ての内容をガバっと取り出し
strdata = objInFile.ReadAll
MsgBox strdata
End If
End Sub
但しカンマやダブルコーテーションが入っている場合がある。検索に邪魔をする恐れは在る。
VBAならSplit関数で配列に入れることは出来る。
(3)検索
上記のFSOでは正規表現というのも使える。しかし質問者には直ちには無理だろう。
Instr関数を勉強して、捜していくほか無いだろう。
ーー
以上のことから、FSOというのが、この課題には適しているように思う。{FSO」で照会。
====
全般に
質問振りから、この課題をやるには早すぎて、色んな経験を積む必要有りと見る。
(1)急ぐから
(2)知らないから
安易に質問するのは、勝手で、おかしい。日頃から備えておかないと。
それなりに付帯智識も要り、自分にツーニングする智識もいるのであって、すべてコピペして動くものと思わないこと。
No.2
- 回答日時:
自分だったら「grep」
http://www.k-tanaka.net/unix/grep.html
>for %f in (*.txt) do grep パターン < %f
http://www.vector.co.jp/soft/winnt/util/se365621 …
ここからダウンロードできます。
No.1
- 回答日時:
検索したい文字がC以外(A~B、D~L)に存在する場合がありますでしょうか?
C以外(A~B、D~L)には存在することが無いのであれば、複数のCSVファイルをまとめて検索して1つのファイルに抽出するソフトはあると思います。
下記の様なソフトでは複数のCSVファイルをまとめて検索して1つのファイルに抽出できます。
■JGREP正規表現による文字列検索ソフト
http://www.vector.co.jp/soft/dl/win95/util/se174 …
■Windows版Grep(コマンドライン用)
http://www.vector.co.jp/soft/winnt/util/se365621 …
注意:Microsoft.NET Framework1.1がインストールされている必要があります。
※grep -n -p ABCDEFG *.csv > output.csv
-n ・・・ その行の行番号を出力しない場合
-p ・・・ ファイルのパスを表示しない場合
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- フリーソフト テキストファイル内を検索したい 1 2022/06/01 08:33
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Visual Basic(VBA) vbaサブフォルダーをワイルドカードで取得したい 2 2022/11/15 08:04
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- ドライブ・ストレージ Windows10でのファイル内の文字列検索 SSDに寿命? 4 2022/07/12 03:25
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルでファイルを開かずに文字を検索し、行を抽出したい
Excel(エクセル)
-
【ExcelVBA】300万件越えCSVから条件を満たす行だけ抽出するには?
Visual Basic(VBA)
-
CSVファイルの指定列だけを読み込んでEXCELに表示したい
Excel(エクセル)
-
-
4
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
5
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
6
【至急】エクセルで複数のファイルから文字列を検索、行全てを抽出する
Excel(エクセル)
-
7
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
8
CSVデータの文字列置換
その他(プログラミング・Web制作)
-
9
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
10
2つ以上の変数を比較して最大数を求めたい
Word(ワード)
-
11
Excel VBAでCSVファイルを読込むと何故か文字列が日付に変換さ
その他(Microsoft Office)
-
12
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
13
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
14
マクロから出力されるcsvのダブルコーテーションをなくしたい。
Visual Basic(VBA)
-
15
メモリの「コミット済み」の意味を教えてください
Windows 10
-
16
callで順に実行されるプロシージャを途中で止める方法
Excel(エクセル)
-
17
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
htmlを置換する方法とjsp表示
-
複数ファイルによる共通の外部...
-
複数のファイルからのデータの...
-
javaで例外エラーが発生した際...
-
画像読み込み時のOutOfMemory
-
Access2010の最適化設定について
-
C言語でテキストファイルに文...
-
処理負荷特定で考えられる要因...
-
VBに、Cのincludeのようなもの...
-
Excelマクロでの再読込み方法
-
マッチング処理
-
ドラッグアンドドロップでファ...
-
symantec社の製品名及び機能の違い
-
2つのファイルを比較するC言語...
-
gccでリソースファイルを使わな...
-
ファイルからサイズ不明の行デ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
バッチで118項目のCSVを処理し...
-
CSVファイルへの保存の際、デー...
-
グローバル変数のよくない使い...
-
テキストファイルの最終行を削...
-
ドラッグアンドドロップでファ...
-
VB.NETによるプロセス間通信
-
VBAにてEXCEL以外のファイル(テ...
-
分割コンパイルの#defineについて
-
ファイルの結合
-
iniファイルに追記がしたいです。
-
VBに、Cのincludeのようなもの...
-
動画処理のライブラリについて
-
Cでのネットワークファイルの読...
-
ダイアログボックスで複数フォ...
-
C言語のfopenについて教えてく...
-
「VBScript」ADODB.Streamにお...
-
マウスポインタの変更
おすすめ情報