2014-06-12 26 views
0

今天我遇到了一个尝试逐行写入csv文件的问题,其中一列格式化为本地Excel日期。我的脚本可以正常工作,但不能正确导出日期,并且正在以串行字符串的形式导出。我只是希望导出的文件以“mm/dd/yyyy”格式写入日期。有任何想法吗?将本地excel日期导出为文本字符串

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 

我选择了手动创建CSV文件,因为ID不希望任何与使用内置到Excel的FileFormat:=xlCSV功能有关的不良角色。

为了提供我正在处理的数据类型的示例,我创建了一个我想要的输出csv文件的样例。

网站,日期,Plane_Height,Area_2D,Area_3D,体积,错误 225R,11/3/1990,8kto25k,2212.834,2235.460,841.76655,88.513

谢谢,

dubbbdan

+0

在Windows上不能使用'/'在一个文件名。 – enderland

回答

2

看来您的数据包含在6列中。这里有一个方法,使的.csv它保留日期格式:

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

相关问题