2017-01-11 15 views
0

以下のコードを使用して添付ファイルごとに.txtファイルからデータを抽出しようとしました。しかし、私はどのように私は、負の符号が失われますコーディングを実行するときに負の値を維持する考えがありません。助けてください。テキストファイルを想定しVBAコーディング:.txtファイルからデータを抽出する

enter image description here

Private Sub CommandButton1_Click() 

Dim myFile As String, text As String, textline As String, Point1 As Integer, LastRow As Long, Filename As String, x As Variant 

'Open File Location 
myFile = Application.GetOpenFilename() 

'Read the data file 
Open myFile For Input As #1 

Do Until EOF(1) 
Line Input #1, textline 
text = text & textline 

Loop 

Close #1 'Close data file 

'Defined starting point 
Point1 = InStr(text, "Coord. Z") 

'Adding new line 
LastRow = Sheet2.Range("A" & Rows.Count).End(xlUp).Row + 1 

'Get Module S/N from filename 
strFilePath = myFile 
Filename = Replace(Dir([strFilePath]), ".txt", "") 

'Location of the data 
Sheet2.Range("A" & LastRow).Value = Filename 
Sheet2.Range("B" & LastRow).Value = Mid(text, Point1 + 21, 8) 
Sheet2.Range("C" & LastRow).Value = Mid(text, Point1 + 36, 8) 
Sheet2.Range("D" & LastRow).Value = Mid(text, Point1 + 54, 8) 
Sheet2.Range("E" & LastRow).Value = Mid(text, Point1 + 70, 8) 
Sheet2.Range("F" & LastRow).Value = Mid(text, Point1 + 84, 8) 
Sheet2.Range("G" & LastRow).Value = Mid(text, Point1 + 103, 8) 

`End Sub 

答えて

0

はCOORDで一つだけの行が含まれています。 Zと値がスペースで区切られている場合、次のコードを使用してその行をスキャンし、配列に分割することもできます。

Dim vTmp as variant 
Dim i as long, j as long 

Do Until EOF(1) 
Line Input #1, textline 
If InStr(text, "Coord. Z") then vTmp = split(textline, " ") 
Loop 

このコードは、結果の配列を介して(ダブルスペースが存在する場合、または空のエントリ)連接文字を含む配列VTMP

次にループを作り、あなたのシート内の値をダンプ。

j = 1 'Start column 

'Loop through array 
For i = LBound(vTmp) to UBound(vTmp) 
    If vTmp(i) <> "" 'If entry is not empty 
     Sheet2.Cells(LastRow, j).value = vTmp(i) 'Dump entry 
     j = j + 1 'Next column 
    End if 
Next i 
関連する問題