2017-06-05 1 views
0

[こんにちは私はVBAの新機能で、マクロをエクセルして自分のマクロを作成しようとしています。私が持っているVBミニプログラムは、特定のディレクトリや場所にあるすべてのログファイルで特定の値(例15)を検索します。ログファイルに値が見つかると、プログラムはそれをリストボックスに表示します。私のプログラムは機能しています。私の唯一の問題は、その場所に数百または数千のログファイルがある場合、プログラムは正確な値15のログデータを含む1または5の値を持つすべてのログデータをリストします。もう1つの問題は、下にリストされています。これは、正しい値を持つ最初に見つかった項目の上にあるか、リストされているはずです。以下は私の質問です。特定のフォルダまたはディレクトリ(場所)のテキストボックス内の値を検索または比較し、正確な値を持つログファイルを一覧表示します

  1. それはプログラムが正確な値を持つログデータを見つけた場合、プログラムは一番上に一覧表示されますか、最初に挙げられることは可能ですか?

  2. 出力が制限されている場合もより簡単です。 1と5のファイルが数千または数百になると、すべてがリストボックスに表示されるためです。値が15の正しいログデータのみをリストすることは可能ですか?親切にスナップショットとコードを参照してください。私は私の仕事の中でこのマクロを使用しようとしています。私はそれを理解しようとしています。

プログラム:

Private Sub Comfind_Click() 

    Dim theString As String 
    Dim path As String 
    Dim StrFile As String 
    Dim fso As New FileSystemObject 
    Dim file As TextStream 
    Dim line As String 
    Dim blnFound As Boolean 

    ListLog.Clear 
    theString = TextPlate.Text 

    path = TextPath.Text 
    StrFile = Dir(path & "*.pdms") 

    Do While StrFile <> "" 
     'Find TheString in the file 
     'If found, list log and exit loop 

     Set file = fso.OpenTextFile(path & StrFile) 
     Do While Not file.AtEndOfLine 
      line = file.ReadLine 
      If InStr(1, line, theString, vbTextCompare) > 0 Then 
      ListLog.AddItem StrFile 

       Exit Do 
      End If 

     Loop 
     file.Close 
     Set file = Nothing 
     Set fso = Nothing 
     StrFile = Dir() 

    Loop 
    MsgBox "successfully search log data!!!"  

End Sub 

ログファイル:

答えて

0

あなたは少しそれを絞り込むことができます。

Dim arr 
Do While Not file.AtEndOfLine 
    line = file.ReadLine 
    If InStr(1, line, "PLATEKEY", vbTextCompare) > 0 Then 
     arr = Split(line, "PLATEKEY") 
     If Trim(arr(1)) = theString Then 
      ListLog.AddItem StrFile 
      Exit Do 
     End If 
    End If 
Loop 
+0

ハイテクあなたのコードの作品を​​。ありがとうございました。しかし、私は別の質問があります。結果が表示されない場合でも、データログがポップアップ表示されない可能性がありますか?私はMsgboxの仕組みを知っていますが、それを置くことは考えられません。その条件に合うように別のif条件を作成する必要がありますか?ありがとうございました! – sayjon

関連する問題