フォルダの中に複数の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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
【ExcelVBA】300万件越えCSVから条件を満たす行だけ抽出するには?
Visual Basic(VBA)
-
エクセルでファイルを開かずに文字を検索し、行を抽出したい
Excel(エクセル)
-
csvファイルのデータの一部を取り出したい
Visual Basic(VBA)
-
-
4
CSVファイルの指定列だけを読み込んでEXCELに表示したい
Excel(エクセル)
-
5
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
CSVファイルの特定行の削除
Visual Basic(VBA)
-
8
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
9
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
10
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
11
【至急】エクセルで複数のファイルから文字列を検索、行全てを抽出する
Excel(エクセル)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
ある文字列を含む行の抽出
Excel(エクセル)
-
14
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
15
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
16
テキストファイルから特定の文字列が入った行を取得したいです。 例えば下記のような文が記載されたテキス
Visual Basic(VBA)
-
17
【VBA】テキストファイルから特定の文字列を抽出して、エクセルに出力する
Excel(エクセル)
-
18
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
19
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
20
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイルの結合
-
グローバル変数のよくない使い...
-
ダイアログボックスで複数フォ...
-
ドラッグアンドドロップでファ...
-
フレームワークについて
-
プログラムについて。
-
CSVファイルへの保存の際、デー...
-
テキストファイルの最終行を削...
-
バッチで118項目のCSVを処理し...
-
HANDLE無効について
-
Android ファイルの書き込み
-
Javascript で INI の読み書き
-
マスタとファイルの違いって?
-
dataファイルをxtxファイルにす...
-
画像読み込み時のOutOfMemory
-
smarty上で、動的にファイルを...
-
ファイル名の先頭にアンダース...
-
【C#】リソースファイルの埋め...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
dataファイルをxtxファイルにす...
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
ファイル名の先頭にアンダース...
-
大きいサイズのテキストファイ...
-
グローバル変数のよくない使い...
-
fopenできる上限の変更
-
ハッシュの計算時間について
-
VBに、Cのincludeのようなもの...
-
CSVファイルへの保存の際、デー...
-
分割コンパイルの#defineについて
-
VBAにてEXCEL以外のファイル(テ...
-
iniファイルに追記がしたいです。
-
ドラッグアンドドロップでファ...
-
SGファイルって何ですか?
-
同じ名前のファイルを作った場...
-
アドレス帳WABファイルをサンダ...
-
ダイアログボックスで複数フォ...
-
「VBScript」ADODB.Streamにお...
おすすめ情報