1

テキスト ファイルを読み込もうとしているときに問題が発生しました。基本的に、テキスト ファイルは情報のブロックで構成されており、各ブロックの間に空白の行があります。Hier は私のテキストのサンプルです:

    FESTWERT FRAUS 
       LANGNAME "bla bla bla" 
       FUNKTION dfgg 
       EINHEIT_W "ü"
       WERT -9.2654122070312500
   END

    KENNFELD KFDWNWCSA 4 4
       LANGNAME "bla bla bla" 
       FUNKTION FGHK 
       EINHEIT_X "8/kl"
       EINHEIT_Y "bla"
       EINHEIT_W "bla"
       ST/X   1658.0000000000000000   987.0000000000000000   3698.0000000000000000           3520.0000000000000000   
       ST/Y   -30.0000000000000000
       WERT   22.0000000000000000   16.9870000000000000   10.3210000000000000    10.0000000000000000   
       ST/Y   0.0000000000000000
       WERT   10.0000000000000000   10.0000000000000000   10.0000000000000000   10.0000000000000000   
       ST/Y   45.2500000000000000
       WERT   10.0000000000000000   10.0000000000000000   10.0000000000000000   10.0000000000000000   
       ST/Y   21.0000000000000000
       WERT   22.0000000000000000   16.0000000000000000   10.0000000000000000   10.0000000000000000   
    END

実際には、これらのブロックから数字を抽出したいと考えています。しかし、私はこのエラーが発生します:これは私のコードです:

  Dim fso As New FileSystemObject
 Dim ts As TextStream
 Set ts = fso.OpenTextFile(Name, ForReading)
 Do While Not ts.AtEndOfStream

 strArray = Split(ts.ReadLine, Space(1), 2) ' Extrahieren, was in einer Zeile ist

If Len(Join(strArray, "")) <> 0 Then 
   If strArray(0) = "KENNFELD" Then  
     SWKNF = True
     ts.SkipLine
     ts.SkipLine
     ts.SkipLine
     ts.SkipLine
     ts.SkipLine
     wertkenfeld = strArray(1)
     strArray(1) = ""
   End If


   If strArray(0) = "END" Then werden
     If SWKNFL = True Then 
      For P = 0 To X - 1
        DoCmd.RunSQL ("INSERT INTO Test_DCML_G (XValue,Wert,name) VALUES ('" & Stx(P) & "','" & wert(P) & "','" & wertkenfeld & "');")
      Next P
     End If
     SWKNF = False
     SWKNFL = False
     Erase Warray
     X = 0
     W = 0
     Erase Yarray
     Erase Xarray
     Erase Stx
     Erase wert
     ts.SkipLine ' I get the error in this line
   End If
.....

この問題を解決するのを手伝ってくれませんか? どうもありがとう

4

1 に答える 1

2

ファイルの最後の END に到達すると、スキップまたは読み取りにより、ファイルの最後を超えて移動します。

原則として、移動する前に EOF をチェックするために行をスキップまたは読む必要がある場合 (テキスト ファイルまたはレコードセットの両方) をお勧めします。EOF に達していないか、目的の行が見つかったかどうかをテストする条件でループを使用することもできます。

行をスキップする最初のチャンクは、次のように記述できます。

  strReadLine = ""
  do while not ts.AtEndOfStream and not (strReadLine LIKE "ST/*")
    strReadLine = ts.readline
  loop

さよなら

于 2015-01-20T09:23:14.730 に答える