2016-11-07 13 views
-1

フォルダ内のすべての.txtを編集する.vbsを作成します。これは私が使用したコードで、フォルダはC:\test folderです。サブフォルダを扱う際の助けが必要

Const ForReading = 1 
Const ForWriting = 2 

newline = "" 
line = 1 

Set objFSO = CreateObject("Scripting.FileSystemObject") 

objStartFolder = "C:\test folder\" 

Dim lineCount : lineCount = 0 
Dim firstContent : firstContent = "" 

Set objFolder = objFSO.GetFolder(objStartFolder) 
Set colFiles = objFolder.Files 

For Each objFile in colFiles 
    If LCase(objFSO.GetExtensionName(objFile)) = "txt" Then 
     lineCount = 0 
     firstContent = "" 

     FileName = objStartFolder & objFile.Name 

     Set objStream = objFSO.OpenTextFile(FileName, ForReading) 
     Do Until objStream.AtEndOfStream 
      lineCount = lineCount + 1 
      firstContent = firstContent & objStream.ReadLine & vbCrLf 
      If lineCount = line Then 
       firstContent = firstContent & newline & vbCrLf 
      End If 
     Loop 
     Set objStream = objFSO.OpenTextFile(FileName, ForWriting) 
     objStream.WriteLine firstContent 
     objStream.Close 
    End If 
Next 

これは機能します。すべてのテキストファイルを私が言いたいものに変更しますが、SFC:\test folder\SF)と呼ばれるC:\test folderのフォルダを作成すると、SFのテキストファイルはすべて変更されません。サブフォルダを使用するにはどうすればよいですか?

答えて

0

再帰は、それ自身を呼び出す関数です。それは木を歩くために使われます。

ProcessFolder DirName 

Sub ProcessFolder(FolderPath) 
' On Error Resume Next 
    Set fldr = fso.GetFolder(FolderPath) 

    Set Fls = fldr.files 

    For Each thing in Fls 
     msgbox Thing.Name & " " & Thing.path 
    Next 

    Set fldrs = fldr.subfolders 
    For Each thing in fldrs 
     ProcessFolder thing.path 
    Next 

End Sub 
+0

私の.vbsをこれに置き換えるか、追加しますか? –

+0

どちらも、あなたはそれから学びません。なぜあなたのコードを書くのですか? –

+0

5行目のエラー。「必要なオブジェクト:objFSO」。 Set objFSO = CreateObject( "Scripting.FileSystemObject")? –

関連する問題