2010-07-27 2 views
0

다음 코드를 사용합니다.vba creat csv를 사용하지만 csv의 형식이 올바르지 않습니다.

Private Sub CommandButton1_Click() 
    Const File$ = "C:\CsvfileTest2.csv" 
    Dim Fso, MyFile 

    Set Fso = CreateObject("Scripting.FileSystemObject") 
    Set MyFile = Fso.CreateTextFile(File, True) 

    MyFile.Close 
    With CreateObject("ADODB.Stream") 
     .Open 
     .LoadFromFile File 
     .Position = 0 
     .Charset = "UTF-8" 
     .SaveToFile File, 2 
     .Close 
    End With 

    'Const ForReading = 1, ForWriting = 2, ForAppending = 8 
    Set MyFile = Fso.OpenTextFile(File, 8, True, True) 

    ' Just for the example: 
    myrange1 = 10 
    box = "" 

    For i = 1 To myrange1 
    box = "" 
     For j = 1 To 10 
      box = box & Sheet1.Cells(i, j) & ChrW(44) 
     Next j 
    MyFile.WriteLine box 
    Next i 

    MyFile.Close 
End Sub 

내가 만든 파일은 진짜 CSV가 아닙니다. 아무도 도와 줄 수 있니? CSV 파일을 두 번 클릭하면 다음과 같이 표시됩니다. 각 줄은 10 개의 다른 셀이 아닌 하나의 셀에 나타납니다.

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

A, S, D, SDF, SDF, dsdd, DD, DSD, SD, SDS,

+0

utf-8 형식으로 사용합니다. – dadario

+0

어떤 의미에서 "실제로 CSV가 아닌가요?"즉 출력물에 어떤 문제가 있습니까? – Murph

+0

이것은 혼동을 불러 일으킬 수 있습니다. Excel은 CSV 파일을 처리하기위한 구분 기호로 쉼표 대신 세미콜론'; '을 사용합니다. – marg

답변

2

내 현재의 문제는 따옴표과 관련이 없습니다. 해당 필드에 쉼표/​​세미콜론, 줄 바꿈 및 따옴표가 포함되어있을 때만 필드 주위에 따옴표가 필요합니다. 따옴표가 포함되어 있으면 따옴표가 두 번 나타납니다. He said "Hello"을 포함하는 입력란은 "He said ""Hello"""으로 표시되어야합니다.

로캘에서 구분 기호 문자를 찾아야합니다. 한 가지 방법은 Excel을 시작하고 일부 데이터를 일부 셀에 입력 한 다음 CSV로 저장하는 것입니다. Excel을 끝내고 메모장을 사용하여 파일을 봅니다.

그런데 끝에 쉼표를 추가하고 있습니다. 11 열이 비어있는 것처럼 11 열이있는 것처럼 파일이 보이게됩니다.

","ChrW(44)보다 약간 더 읽을 수 있습니까?

관련 문제