vba로 번호 간격의 csv 파일을 정확하게 열기

1177 단어
회사의 한 장치가 컴퓨터에서 내보낸 기록 파일 형식을 csv로 제어하여 사무용 컴퓨터로 내보냈을 때 이 csv 파일의 구분 문자는 쉼표가 아니라 분호라는 것을 발견했다. 만약에 Excel로 직접 열면 모든 줄의 내용이 첫 번째 열에 쌓여 분리되지 않는다. Excel의 분열 기능으로 간단하게 해결할 수 있지만 내보낸 파일이 매우 많기 때문에 vba로 함수를 써서 해결했다.
Function GetSemicolonCSV(ByVal csvFullName As String)
    Dim i As Long, j As Long, Arr() As Byte, s As String, Arr2, Arr3, ArrAll
    i = FreeFile
    ' unicode csv , 
    Open csvFullName For Binary As #i
    ReDim Arr(0 To LOF(i) - 3)
    Get #i, 3, Arr
    Close #i
    'vb unicode , 
    s = Arr
    ' , 
    Arr2 = Split(s, vbNewLine)
    ReDim ArrAll(0 To UBound(Arr2), 0 To UBound(Split(Arr2(0), ";")))
    ' , 
    Arr3 = Split(Replace(Arr2(0), """", ""), ";")
    ' 
    For j = 0 To UBound(ArrAll, 2)
        ArrAll(0, j) = Arr3(j)
    Next
    For i = 1 To UBound(ArrAll, 1)
        Arr3 = Split(Arr2(i), ";")
        For j = 0 To UBound(ArrAll, 2)
            If j = 2 Then
                ArrAll(i, j) = CDate(Arr3(j))
            Else
                ArrAll(i, j) = CDbl(Arr3(j))
            End If
        Next
    Next
    GetSemicolonCSV = ArrAll
End Function

좋은 웹페이지 즐겨찾기