VBA日期双引号给出三重引号

时间:2016-03-07 02:38:27

标签: excel vba date macros double-quotes

我的Excel VBA代码有一个奇怪的问题。我在CSV电子表格中有一个日期字符串列,我想用双引号括起来。 我在Excel中编写了一个VBA脚本来实现这一目标。但是,每次运行我的脚本时,日期字符串输出都包含在三组双引号中,而不是一组。

我明白了:

"""2015-11-11 00:00:00.40""",59845,-0.20375,3.447,2.0135,32.08286,12,32,11.6

而不是:

"2015-11-11 00:00:00.40",59845,-0.20375,3.447,2.0135,32.08286,12,32,11.6

我哪里可能出错?我尝试使用CHAR(34)CHR(34)代表",但这没有帮助。 这是我的剧本:

    Sub Quotations()
'
' Quotations Macro
'

'
Dim StrFile As String
    StrFile = Dir("E:\Copy\*.csv")

    ' Create new workbook and assign to variable
    Dim wb As Workbook


    Do While Len(StrFile) > 0
    Set wb = Workbooks.Add
    Windows("PERSONAL.XLSB").Activate
    wb.Activate
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;E:\Copy\" + StrFile, Destination:= _
        Range("$A$1"))
        .Name = "E:\Copy\" + StrFile
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "=CHR(34)&RC[-9]&CHR(34)"
    Range("J2").Select
    Columns("J:J").ColumnWidth = 23.57
    Range("J1").Select
    Selection.AutoFill Destination:=Range("J1:J864000")
    Range("J1:J864000").Select
    Selection.Copy
    Columns("A:A").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Columns("J:J").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    'ActiveWindow.SmallScroll Down:=-6

    ActiveWorkbook.SaveAs Filename:= _
        "E:\Copy\quotes\" + StrFile, FileFormat:= _
        xlCSV, CreateBackup:=False
    ActiveWindow.Close savechanges:=False
    StrFile = Dir
    Loop
 End Sub

我做错了什么?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

来自https://en.wikipedia.org/wiki/Comma-separated_values

  

“包含换行符,双引号和/或逗号的字段应为   引用了“

当您将修改后的文件另存为CSV时,Excel会看到您添加的引号,因此会在这些字段周围添加引号。当它这样做时,它也会将你添加到 escape 中的引号加倍(因此解析保存文件的程序不会将它们解释为字段引号)

如果您在Excel中重新打开CSV文件,您会看到它已正确解析,并且只显示您添加的单组引号。