2011-12-28 6 views
0

.CSV 파일을 가져 와서 정수인 각 데이터를 읽고 최대 값을 찾는 방법을 알아 내려고 애쓰는 데 끔찍한 시간이 있습니다. 파일의 값.VB6에서 .CSV 파일을 읽고 최대 수치 찾기 :

나는이 파일을 Excel에서 열고 VB6을 사용하여 Excel에서 계산을 완료했습니다. 그러나, 나는 외부 프로그램을 사용할 필요가 없다.

누군가가 .CSV 파일을 열고 변수에 데이터 항목을 읽는 방법을 설명 할 수 있도록 도와주십시오.

시간이 지났으므로 절대적으로 정신 나간다.

나머지 부분은 쉽게 할 수 있습니다. CSV에서 한 하나의 열을 가정들/여자들

감사합니다 ...

답변

3
Dim F As Long, d As Double, dMax As Double 
F = Freefile 
Open "file.csv" For Input As F 
While Not Eof(F) 
    Input #F, d 
    If d > dMax Then dMax = d 
Wend 
Close F 
MsgBox "Max is " & dMax 

. 사용

Input #F, col1, col2, col3 

기타 ... 여러 열의 경우.

+0

고마워요! "file.csv"대신 내 디렉토리/파일을 입력하면 오류가 발생합니다. 나는 나의 두뇌가이 시점에서 나올 정도로 오래 촛불을 태우고 있을지도 모른다고 생각한다. 예 : Dim strFilePath As String strFilePath = dirBox.Path & "\"& filBox.파일 이름 희미한 F 롱, 더 블룸 D, 더블 열기 strFilePath으로 DMAX로 입력을 F로 동안하지 EOF (F) 입력 #F, D 거라고 경우> DMAX 그런 DMAX = D 나아가 다 닫기 F 있는 MsgBox "Max is"& dMax – Defektive

+0

선언 다음에 Open file 부분 앞에 f = FreeFile을 추가하면 작동합니다! 도와 주신 매트 감사합니다. 너 대단해! – Defektive

+0

죄송합니다. 깜빡했습니다. 나는 대답을 추가 할 것이다. iPad에서 답변을 얻으 려 할 때 얻을 수있는 것! –

1

문제의 근원이 한 번에 한 줄씩 파일을 읽는 것 같습니다. Scripting.FileSystemObject http://support.microsoft.com/kb/186118을 사용하여 해당 작업을 수행합니다. 내장 된 Input 문보다 훨씬 쉽게 사용할 수 있습니다. 여기에 해당 페이지의 일부 코드는 다음과 같습니다

텍스트의 라인을했으면
Private Sub Command1_Click() 
    'Declare variables. 
    Dim fso As New FileSystemObject 
    Dim ts As TextStream 
    'Open file.' 
    Set ts = fso.OpenTextFile(Environ("windir") & "\system.ini") 
    'Loop while not at the end of the file.' 
    Do While Not ts.AtEndOfStream 
     Debug.Print ts.ReadLine 
    Loop 
    'Close the file.' 
    ts.Close 
End Sub 

가, 다음, 값의 배열을 얻을이 숫자인지 볼 하나 하나를 검사하기 위해 분할을 사용합니다. 일치하는 경우 최대 값 검색에 값을 포함 시키십시오. Is there a VB6 function analagous to C's sscanf?

2

Jet 텍스트 IISAM은 표 형식의 텍스트를 포함하는 모든 종류의 파일 처리를위한 강력한 도구가 될 수 있습니다. 간단한 쿼리, 파일 간의 조인, 쿼리에 VBA Expression Service 식 포함, 입력 파일을 다른 출력 형식으로 변환 및 기타 많은 작업을 수행 할 수 있습니다.

schema.ini 파일을 추가하면 구분 기호, 열 이름, 데이터 형식 형식을보다 세밀하게 제어 할 수 있으며 고정 필드 텍스트도 처리 할 수 ​​있습니다. 간단하지만 컬럼의 최대 값을 찾기위한

:이 잔인한 사람처럼 보일 수 있지만

'Requires a reference to ADO 2.5 or later. 

Private Function GetMax(_ 
    ByVal FieldNum As Integer, _ 
    ByVal CSVFile As String, _ 
    Optional ByVal CSVFolder As Variant) As Variant 
    'Find max value in field FieldNum of CSVfile, assumed 
    'here to be a HDR=No CSV file so field names are F1, 
    'F2, etc. 

    Dim rsResult As ADODB.Recordset 

    If IsMissing(CSVFolder) Then 
     CSVFolder = App.Path 
    ElseIf VarType(CSVFolder) <> vbString Then 
     CSVFolder = App.Path 
    End If 

    Set rsResult = New ADODB.Recordset 
    With rsResult 
     .CursorLocation = adUseClient 
     .Open "SELECT Max(F" & CStr(FieldNum) & ") FROM [" & CSVFile & "]", _ 
       "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" _ 
       & CSVFolder _ 
       & "';Extended Properties='Text;HDR=No'", _ 
       adOpenStatic, adLockReadOnly, adCmdText 
     GetMax = .Fields(0).Value 
     .Close 
    End With 
End Function 

, 그것은 다른 많은 텍스트 테이블 처리 아이디어의 "세균"고려하십시오.

VB에서와 마찬가지로 VBScript와 마찬가지로 효과적이며 유용합니다.

자세한 내용은 Processing Text Databases을 참조하십시오.

관련 문제