LoginSignup
0
0

More than 5 years have passed since last update.

同一フォルダ内のすべてのファイルの1行目と2行目を読み込んで、1つのテキストファイルに保存するVBSプログラム

Last updated at Posted at 2016-12-01
1 / 5

 3年ほど前に、回答者から回収した回答テキストファイルのファイル名と1行目の回答者情報と2行目の評価点をまとめて記録する必要が出てきて、このコードを書きました。
 拡張子チェックや文字コードチェックはしていないので、もし必要であればForループの中でif処理をすることになります。当然、同一フォルダ内ということは、このファイルの2行分のコードも吐き出し先の"FOKekka.txt"に記録されます。


2行読取.vbs
Option Explicit
Dim objFS
Dim objFolder,objFile
Dim EFiles
Dim strWSPath,strSeitoNo
strWSPath = "./"
Dim strSubFilesName,strOrgFile,strOrgFilePath,strYet
strSubFilesName = ""
Dim x
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(".\")
Set EFiles = objFolder.Files
Dim FileObj,LineObj
Dim endsw
Dim suu
Dim Linerec,recobun
Dim hyoujibun
Set FileObj=CreateObject("Scripting.FileSystemObject")
Dim oHFL
Set oHFL = FileObj.CreateTextFile("FOKekka.txt", True)
endsw=0
suu=0
hyoujibun=""

For Each x In EFiles
    strOrgFile = x.Name
    strOrgFilePath = strOrgFilePath & x.Name & vbCrLf
    Set LineObj=FileObj.OpenTextFile(strOrgFile)
    suu=suu+1
    Linerec=LineObj.ReadLine()
    hyoujibun=hyoujibun & Linerec &vbCrLf
    oHFL.WriteLine(Linerec)
    Linerec=LineObj.ReadLine()
    hyoujibun=hyoujibun & Linerec &vbCrLf
    oHFL.WriteLine("    " & Linerec)
    LineObj.Close()
Next
msgbox hyoujibun,, "ファイル内容"
msgbox suu & "件",,"ファイル件数"
MsgBox ("  ファイルリスト" & vbCrLf & strOrgFilePath)

Set oHFL = Nothing
Set EFiles = Nothing
Set objFile = Nothing
Set objFS = Nothing

 例えば、40人の回答ファイルを、GUI操作で開いてはの2行分をCopy&Pastしていては、10分前後かかります。ましてやファイル名も取ろうとするとさらに3分以上かかるでしょう。それをこのコードを働かせれば一瞬で完了します。昨今のプログラミング教育論争を見聞しつつ、プログラミングが何の役に立つのかという疑問への即物的な回答がこのようなことだと考えたりするわけです。


 もっとも、このプログラムを開発するためにWSHのフォルダオブジェクトとファイルオブジェクトの特性やメソッドを調べる必要があり、3時間以上費やしました。まだ時間的な元は取れていないので、ここに公開しました。実用的にでも、教材としてでも参考にしていただければ幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0