2011-01-23 13 views
0

私はたくさんのテキストファイルの粗い解析をしようとしています。基本的には、(){}[]"'のような文字を削除し、コロンをセミコロンに置き換えて、文字列をより見栄えのよい文字列に置き換えようとしています。複数のテキストファイルを解析するVBA?

キッカーは私が約1500個のファイルを持っていることです。すべてのファイルをマージした後、最初に解析してみると、アプリケーションは応答を停止します。
私はこれを行うためにWindowsマクロを使用していて、個々のファイルごとに動作しますが、そのディレクトリ内のすべてのファイルに対してどのように行うのかわかりません。

Selection.Find.Execute Replace:=wdReplaceAll 
With Selection.Find 
    .Text = "[" 
    .Replacement.Text = "" 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
Selection.Find.Execute Replace:=wdReplaceAll 
With Selection.Find 
    .Text = "]" 
    .Replacement.Text = "" 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
Selection.Find.Execute Replace:=wdReplaceAll 
With Selection.Find 
    .Text = "," 
    .Replacement.Text = "" 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
Selection.Find.Execute Replace:=wdReplaceAll 
With Selection.Find 
    .Text = """" 
    .Replacement.Text = "" 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
+0

あなたはPowerShellのソリューションを楽しまでしょう私が使用しているコードの

例またはあなたはVBの意志ですか? – squillman

+0

私はうまくいくものを楽しませています。私はPowershellの知識がないのが残念ですが、それほど複雑でない場合は何らかの指示が必要な場合があります。 – Newbie

+1

私はあなたがVBAではなくVBであることをかなり確信しています。あなたは、人々が従うタグでより多くの答えを得るでしょう。つまり、あなたは次のようなものを探していますか?http://stackoverflow.com/questions/4546471/automating-open-excel-file-run-script-then-save-process-with-a-vba-script/4549563 #4549563 – Fionnuala

答えて

1

を以下のサブは、あなたが欲しい文字列の変更を指定して作るディレクトリを反復処理します:

Option Explicit 

Sub FileProcessing() 
    Dim fileDirectory As String 
    Dim fileName As String 
    Dim fileContents As String 
    Dim inputFileNumber As Integer 
    Dim outputFileNumber As Integer 
    Dim iFileCount As Integer 

    fileDirectory = "C:\deleteme\" 

    'Get first file in directory 
    fileName = Dir(fileDirectory & "*.*") 
    'Begin loop to iterate through each file 
    Do While fileName <> "" 

     If iFileCount Mod 50 Then 'Display a message in Immediate window for every 50 files 
      Debug.Print "Working on file number " & iFileCount & " : " & fileName 
     End If 

     'Open File 
     inputFileNumber = FreeFile 
     Open fileDirectory & fileName For Input As #inputFileNumber 

     'Put file contents into a variable 
     'NOTE: A variable-length string can contain up to approximately 2 billion (2^31) characters. 
     fileContents = Input$(LOF(inputFileNumber), 1) 

     'Close the File 
     Close #inputFileNumber 

     'Do your replacements 
     fileContents = Replace(fileContents, "(", "") 
     fileContents = Replace(fileContents, ")", "") 
     fileContents = Replace(fileContents, "{", "") 
     fileContents = Replace(fileContents, "}", "") 
     fileContents = Replace(fileContents, "[", "") 
     fileContents = Replace(fileContents, "]", "") 

     fileContents = Replace(fileContents, ":", ";") 

     'Get the output file ready to write: 
     outputFileNumber = FreeFile 
     Open fileDirectory & fileName For Output As #outputFileNumber 

     Print #outputFileNumber, fileContents 
     Close #outputFileNumber 

     'Get next file 
     fileName = Dir 
    Loop 

    MsgBox "Finished" 

End Sub 
関連する問題