2017-09-09 2 views
0

にそれらを書く:私は取得したい私はそのようなtxtファイル持ってtxtファイルの段落から特定の行を取得し、1行

 
GLP 
07-Sep-2017 
09:13 

8.186 pH 
-59.5 mV 
25.5 ºC ATC 
Manual EP 
PRO_ISM 
6270340 
Last cal.: 14-Aug-2017 14:51 
S210 
B625637220 
EMF 





GLP 
07-Sep-2017 
08:43 

8.180 pH 
-59.2 mV 
25.5 ºC ATC 
Manual EP 
PRO_ISM 
6270340 
Last cal.: 14-Aug-2017 14:51 
S210 
B625637220 
EMF 





GLP 
07-Sep-2017 
08:13 

8.180 pH 
-59.2 mV 
25.6 ºC ATC 
Manual EP 
PRO_ISM 
6270340 
Last cal.: 14-Aug-2017 14:51 
S210 
B625637220 
EMF 

... 

を:

 
07-Sep-2017,08:43, ,8.180 pH,-59.2 mV,25.5 ºC ATC 
07-Sep-2017,08:13, ,8.180 pH,-59.2 mV,25.6 ºC ATC 
07-Sep-2017,07:43, ,8.180 pH,-59.2 mV,25.6 ºC ATC 

私はすでにVBScriptを書きました以下が、私のように、同じライン上のすべてを取得する:

 
,07-Sep-2017,08:43, ,8.180 pH,-59.2 mV,25.5 ºC ATC,07-Sep-2017,08:13, ,8.180 pH,-59.2 mV,25.6 ºC ATC,07-Sep-2017,07:43, ,8.180 pH,-59.2 mV,25.6 ºC ATC 

私はFiの後に私のvbCrLfを配置する方法を見つけることができませんでした最初のブロック。

アイデアはありますか?

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile("C:\Users\Jean\Desktop\pH\M092735.TXT", 1) 
Set objTextFile2 = objFSO.CreateTextFile("C:\Users\Jean\Desktop\pH\ph.txt", 8) 

Do While objTextFile.AtEndOfStream = False 
    Line = objTextFile.ReadLine 

    If Line = "GLP" Then 
     For i = 1 To 6 
      strLine = strLine & "," & objTextFile.ReadLine 
     Next 
     strLine2 = strLine & vbCrLf 
    End If 
Loop 

objTextFile2.write strLine2 

objTextFile.Close 
objTextFile2.Close 

答えて

1

私はただ問題はポイント形式であるかを教えてくれます:

  1. 比較を。これがどのように機能するのかわかりません。 ReadLineは、末尾のスペースを含む文字列を返します。比較はリセットされません

    If Left(Line, 3) = "GLP" Then 
    
  2. strLineに変更する必要があります。前の結果を次の結果に連結し、データが指数関数的に増加するようにします。 IfFor文の最後の行だけが保存されます

    strLine = "" 
    
  3. の間にこれを追加します。すべての行を保存するには、strLine2文はまた

    strLine2 = strLine2 & strLine & vbCrLf 
    

    に変更する必要があり、あなたが使用している記号をループした後、書き込みを削除し、

    objTextFile2.WriteLine strLine 
    
  4. に連結を変更することができます度記号(Unicode U + 00B0)ではなく、男性順序標識(Unicode U + 00BA)です。これは非常に一般的な間違いです。あなたが気づくのは、データを見るときに、時には下線付きの度合い記号として表示されることです。

+0

ただ、データを再確認しました - それは、スペースではなく、CRLFを末尾ました。回答が修正されました。 – cup

+0

後続スペースが実際の入力データにあるかどうかは不明です。営業担当者は、ラインを正しく破るために質問に追加しているかもしれません。 –

0

ありがとうございました!完璧に動作します。

strLine = "" 

事ここ

完全な作業コード

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile("C:\Users\Jean\Desktop\pH\M092735.TXT", 1) 
Set objTextFile2 = objFSO.CreateTextFile("C:\Users\Jean\Desktop\pH\ph.txt", 8) 

Do While objTextFile.AtEndOfStream=false 
    Line = objTextFile.ReadLine 

If Line = "GLP" Then 
    strLine = "" 
    For i = 1 to 6 
    strLine = strLine & "," & objTextFile.ReadLine 
    Next 
    strLine2 = strLine2 & strLine & vbcrlf 
End If 
Loop 

    objTextFile2.writeline strLine2 

objTextFile.Close 
objTextFile2.Close 
関連する問題