2014-06-12 2 views
0

오늘 네이티브 엑셀 날짜 형식의 열 중 하나를 사용하여 줄 단위로 CSV 파일을 작성하려고하면 문제가 발생합니다. 내 스크립트는 작동하지만 날짜를 올바르게 내보내지 않으며 직렬 문자열로 내보내집니다. 단순히 내 보낸 파일에서 날짜를 "mm/dd/yyyy"형식으로 작성하기 만하면됩니다. 어떤 아이디어?네이티브 엑셀 날짜를 텍스트 문자열로 내보내기

Sub OUTPUT_COMMA_DELIMITED_RANGE() 

Dim outputPath As String 
Dim outputFileName As String 
Dim rSrc As Range 
Dim rSrcRow As Range 
Dim fso As FileSystemObject 
Dim fOut As TextStream 

On Error GoTo SomethingBadHappened 
Dim MyPathFull As String 



outputPath = "C:\workspace\Appendix_Working_Area\Script_Out\" 

    outputFileName = "Z225R" & Chr(95) & "Eddy_Fluctuating_Zone.csv" 
MyPathFull = outputPath & outputFileName 


    Set fso = CreateObject("scripting.filesystemobject") 
    Set fOut = fso.CreateTextFile(outputPath & outputFileName) 

    Dim EddyHghEleZoneRng As Range 

    Set EddyHghEleZoneRng = Worksheets("225R").Range(Cells(1, 9), Cells(1, 9).End(xlToRight).End(xlDown)) 
    Set rSrc = EddyHghEleZoneRng 

    For Each rSrcRow In rSrc.Rows 
     fOut.WriteLine Join(Application.WorksheetFunction.Transpose _ 
          (Application.WorksheetFunction.Transpose(rSrcRow)), ",") 
    Next rSrcRow 

    MsgBox "File " & outputPath & outputFileName & " created successfully" 

SomethingBadHappened: 
If Err.Number <> 0 Then MsgBox Err.Description 
On Error Resume Next 
fOut.Close 
If Err.Number <> 0 And Err.Number <> 91 Then MsgBox "Unable to close file (" & Err.Description & ")" 
End Sub 

이 나는 ​​ID가 엑셀에 내장 된 FileFormat:=xlCSV 기능 사용과 관련된 원하지 않는 문자를 원하지 않기 때문에 수동으로 csv 파일을 생성하기 위해 선택했습니다.

내가 처리하고있는 데이터 종류의 샘플을 제공하려면 출력 CSV 파일도 원하는 모양의 예제를 만들었습니다.

사이트, 날짜, Plane_Height, Area_2D, Area_3D, 볼륨, 오류 225r 11/3/1990,8kto25k, 2212.834,2235.460,841.76655,88.513

감사합니다,

+0

Windows에서 당신은'/'에서 파일 이름을 사용할 수 없습니다 : 여기에 날짜 형식을 보존하는 .CSV이 만들 수있는 방법입니다. – enderland

답변

2

dubbbdan 귀하의 데이터가 6 열에 포함 된 것으로 보입니다.

Sub MakeCSVFile() 
    Dim N As Long, M As Long, i As Long, j As Long 
    Dim OutRec As String 
    N = Cells(Rows.Count, "A").End(xlUp).Row 
    M = 6 
    Close #1 
    Open "C:\TestFolder\x.csv" For Output As #1 
    For i = 1 To N 
     OutRec = Cells(i, 1).Text 
     For j = 2 To M 
      OutRec = OutRec & "," & Cells(i, j).Text 
     Next j 
     Print #1, OutRec 
    Next i 
    Close #1 
End Sub 
+0

6 개의 열로 가정합니다. 내가 데이터의 범위를 가지고 있다면이 스크립트가 어떻게 작동 할까? 각 워크 시트에서 여러 CSV를 내보낼 필요가 있습니다. – dubbbdan

+0

코드는 각 **와 연결된 행 수를 알아야합니다. csv ** –

+0

'N ='행에 들어가야합니까? – dubbbdan