2010-07-27 33 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文件,它会像这样出现。每条线都出现在一个单元中,而不是十个不同的单元中

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,自卫队,日本自卫队,dsdd,DD,渠务署,SD,SDS,

A,S,d,自卫队,日本自卫队,dsdd,DD,渠务署,SD,SDS,

+0

我把它用于utf-8格式 – dadario 2010-07-27 05:49:04

+0

在什么意义上说“不是真正的csv”,即你的输出有什么问题? – Murph 2010-07-27 07:17:56

+0

这可能是造成混淆的原因:Excel使用分号';'而不是逗号作为处理CSV文件的分隔符。 – marg 2010-07-27 07:44:44

回答

2

你目前的问题与报价无关。只有当该字段包含逗号/分号,换行符和引号时,您才需要引号。如果它包含任何引号,则这些引号必须出现TWICE,例如包含He said "Hello"的字段应显示为"He said ""Hello"""

您确实需要找出您的语言环境中的分隔符是什么。找到的一种方法是启动Excel,将一些数据输入到几个单元格中,然后将其另存为CSV。退出Excel并使用记事本查看该文件。

顺便说一句,你在最后放出一个额外的逗号;这将使您的文件看起来像有11列,第11列是空的。

","会比ChrW(44)稍微可读吗?