- ベストアンサー
多数のテキストファイルから文字列を取り出す方法
- 問題は、1000個のテキストファイルから不特定長さの文字列を取り出し、まとめ表というテキストファイルに書き込むプログラムを作成する方法です。
- プログラムのおおまかな考え方は、テキストファイルを1つずつ読み込みながら、不特定長さの文字列を検索して取り出し、まとめ表に書き込んでいくことです。
- 使用する可能性がある命令語は、テキストファイルの読み書きに関する命令(例:ファイルのオープン、読み込み、書き込み、クローズ)や、文字列の検索、操作に関する命令(例:文字列の検索、取得、分割)です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VBScriptはWindows Scripting Host(略してWSH)の1つです。 WSHを簡単に説明すれば、高度なバッチファイルです。 詳しくは「Windows Scripting Host」や「WSH」で検索してみてください。 このWSHはWin98以降であれば使えます。 VBScript(略してVBS)はVBAとよく似た文法で記述できます。 先ほどのプログラムをメモ帳などに貼り付け、拡張子 .vbs で保存すればアイコンの形が変わるはずです。 この状態でダブルクリックすれば実行できます。 コマンドプロンプトでも「cscript test.vbs」とすればコンソールモードで実行できます。 ふと思いましたが、エクセルのVBAとしてももしかしたら動くかも? ちょっと今手元にエクセルがないので試せませんが。
その他の回答 (1)
- luka3
- ベストアンサー率72% (424/583)
VBじゃなくて、VBScriptです。 -- ここから folder = "C:\folder" ' テキストの入っているフォルダ Set fso = CreateObject("Scripting.FileSystemObject") Set dir = fso.GetFolder(folder) For Each name In dir.files Text = fso.OpenTextFile(name, 1, False).ReadAll() Text = Replace(Text, vbNewLine, vbTab) If Right(Text, 1) = vbTab Then Text = Left(Text, Len(Text) - 1) tsvdata = tsvdata & fso.GetFileName(name) & vbTab & Text & vbNewLine Next Set of = fso.CreateTextFile("textfiles.tsv", True) ' 出力ファイル名 of.Write tsvdata of.Close Set of = Nothing -- ここまで フォルダ名などを修正して、test.vbs といった名前で保存してください。 これをダブルクリックすれば、同じフォルダにtsvが出力されます。 整形の仕方がはっきりしないのでタブ区切り(vbTab)にしました。 いったんテキストの中身をすべて読み込んで、Replaceで改行文字をタブに置換させています。
お礼
ご回答ありがとうございます。 正直もうしまして、わたしのプログラム経験は MS_DOS時代のベーシック、ターボc エクセルにおまけでついているVBAでして、 VB6.0は購入しているものの1回も使っていないという状況です。 そもそもVBscriptとはどういうものか、まったくわかりません。 そういものを購入しないといけないのでしょうか? それでパソコン上で走る、実行ファイル的なものを作成できるのでしょうか? そういレベルからまったくわかりません。 大変稚拙でもうしわけありませんが、ご説明いただけると助かります。 m(__)m
お礼
なるほど、バッチファイルでしたか、 そうするとエクセル・付録のVBAで完全自動化のマクロプログラムも 夢ではなさそうな気がしてきました。 これからの勉強になりますが、今後ともご助言いただけるとたいへん たすかります。