
フォルダの中に複数の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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
vba ActiveSheet.pasteを使った...
-
ドラッグアンドドロップでファ...
-
htmlを置換する方法とjsp表示
-
グローバル変数のよくない使い...
-
複数ファイルごとに文字列の置...
-
バイナリ形式のXMLファイルを読...
-
LSI C-86 v3.30c 試食版について
-
ExcelVBAでカレントディレクト...
-
ファイル形式またはファイル拡...
-
FTPでputすると空ファイルが出...
-
SWTとSwingの違い
-
標準的な、vb6.0の開始・保存・...
-
C言語での採番について
-
Acccess レポートをグループ別...
-
フルパスから最後のディレクト...
-
java ファイル出力 Cドライブ直下
-
jarファイルとjava.exeの関連付...
-
VBAでMP3を鳴らしたい
-
デスクトップにショートカット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
営業秘密の漏洩について
-
vba ActiveSheet.pasteを使った...
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
SGファイルって何ですか?
-
テキストファイルの最終行を削...
-
CSVファイルへの保存の際、デー...
-
バッチで118項目のCSVを処理し...
-
Thunderbirdでemlファイルを開...
-
ファイルの結合
-
ダイアログボックスで複数フォ...
-
SAVファイル等について
-
最近使ったファイルからファイ...
-
VBAにてEXCEL以外のファイル(テ...
-
グローバル変数のよくない使い...
-
Cでのネットワークファイルの読...
-
「VBScript」ADODB.Streamにお...
-
RPGでファイル名(もしくはレコ...
-
BI書、FD書 とは
おすすめ情報