• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:多数のテキストファイルからの文字列の取り出し)

多数のテキストファイルから文字列を取り出す方法

このQ&Aのポイント
  • 問題は、1000個のテキストファイルから不特定長さの文字列を取り出し、まとめ表というテキストファイルに書き込むプログラムを作成する方法です。
  • プログラムのおおまかな考え方は、テキストファイルを1つずつ読み込みながら、不特定長さの文字列を検索して取り出し、まとめ表に書き込んでいくことです。
  • 使用する可能性がある命令語は、テキストファイルの読み書きに関する命令(例:ファイルのオープン、読み込み、書き込み、クローズ)や、文字列の検索、操作に関する命令(例:文字列の検索、取得、分割)です。

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率72% (424/583)
回答No.2

VBScriptはWindows Scripting Host(略してWSH)の1つです。 WSHを簡単に説明すれば、高度なバッチファイルです。 詳しくは「Windows Scripting Host」や「WSH」で検索してみてください。 このWSHはWin98以降であれば使えます。 VBScript(略してVBS)はVBAとよく似た文法で記述できます。 先ほどのプログラムをメモ帳などに貼り付け、拡張子 .vbs で保存すればアイコンの形が変わるはずです。 この状態でダブルクリックすれば実行できます。 コマンドプロンプトでも「cscript test.vbs」とすればコンソールモードで実行できます。 ふと思いましたが、エクセルのVBAとしてももしかしたら動くかも? ちょっと今手元にエクセルがないので試せませんが。

harapokochan
質問者

お礼

なるほど、バッチファイルでしたか、 そうするとエクセル・付録のVBAで完全自動化のマクロプログラムも 夢ではなさそうな気がしてきました。 これからの勉強になりますが、今後ともご助言いただけるとたいへん たすかります。

その他の回答 (1)

  • luka3
  • ベストアンサー率72% (424/583)
回答No.1

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で改行文字をタブに置換させています。

harapokochan
質問者

お礼

ご回答ありがとうございます。 正直もうしまして、わたしのプログラム経験は MS_DOS時代のベーシック、ターボc エクセルにおまけでついているVBAでして、 VB6.0は購入しているものの1回も使っていないという状況です。 そもそもVBscriptとはどういうものか、まったくわかりません。 そういものを購入しないといけないのでしょうか? それでパソコン上で走る、実行ファイル的なものを作成できるのでしょうか? そういレベルからまったくわかりません。 大変稚拙でもうしわけありませんが、ご説明いただけると助かります。 m(__)m

関連するQ&A