使用vba创建csv,但csv的格式不正确

使用vba创建csv,但csv的格式不正确,vba,csv,Vba,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 CreateObje

我使用下面的代码

   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、 国防部,国防部,国防部,国防部,国防部,国防部,国防部

a、 国防部,国防部,国防部,国防部,国防部,国防部,国防部

a、 国防部,国防部,国防部,国防部,国防部,国防部,国防部

a、 国防部,国防部,国防部,国防部,国防部,国防部,国防部

a、 国防部,国防部,国防部,国防部,国防部,国防部,国防部

a、 国防部,国防部,国防部,国防部,国防部,国防部,国防部

a、 国防部,国防部,国防部,国防部,国防部,国防部,国防部

a、 国防部,国防部,国防部,国防部,国防部,国防部,国防部

a、 国防部,国防部,国防部,国防部,国防部,国防部,国防部


a、 您当前的问题与引号无关。仅当字段包含任何逗号/分号、换行符和引号时,才需要在该字段周围加引号。如果包含任何引号,这些引号必须出现两次,例如,包含
他说“你好”
的字段应显示为
“他说“你好”

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

顺便说一句,你在结尾加了一个逗号;这将使您的文件看起来有11列,第11列为空


,“
是否比
ChrW(44)
可读性稍高?

在什么意义上是“不是真正的csv”,即输出有什么问题?这可能是造成混淆的原因:Excel使用分号
而不是逗号作为分隔符来处理CSV文件。@marg:CSV中的“C”是“逗号”的缩写。实际上,Excel使用逗号,但在区域设置中,逗号是千位分隔符——然后它使用分号作为字段分隔符。@约翰:我假设使用分号而不是逗号是CSV文件的标准Excel行为。很高兴知道有地方差异。