由于某些原因,使用散列标记的Exceldate格式

问题

我有一个VBA程序,可以将一个Excel文件的数据导出为CSV格式。 当遇到date时,它将格式化为#2016-06-14# 。 我假设散列标记(或者八脚标或英镑标记或井号标签)是为了表明该字段是一个date字段。 但是,当我将CSV导入到不同的工作簿时,无论如何格式化该字段,date都不会到来。 它仍然包含#字符。

问题

我怎样才能得到date列作为YMD格式date导入?

附录

以下是我用来导出和导入的一些代码,供参考。

出口

 Sub WriteCSV(writeRange As Range, fileName As String) Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer myFile = ActiveWorkbook.Path & "\Results\" & fileName & ".csv" Debug.Print myFile Open myFile For Output As #1 For i = 1 To writeRange.Rows.Count For j = 1 To writeRange.Columns.Count cellValue = writeRange.Cells(i, j).value If j = writeRange.Columns.Count Then Write #1, cellValue Else Write #1, cellValue, End If Next Next Close #1 End Sub 

import

 Sub ReadCSV(targetCell As Range, filePath As String) With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;" & filePath, Destination:=targetCell) .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 437 .TextFileStartRow = 2 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False .Delete End With End Sub 

尝试输出.text而不是.value。

改变这个:

 cellValue = writeRange.Cells(i, j).value 

对此:

 cellValue = writeRange.Cells(i, j).Text 

放弃那些#
当我手动Save as文件Save as CSV文件时,Excel不会将这些#放在date的周围。 相反,它会根据我的区域设置(即 – dd/mm/yyyy )定义date。
而当导入时,logging器使用数组(… 4 …)作为date列,并正确导入。
无论如何,CSV 真的很糟糕,如果你在国际环境中工作,因为它根据本地机器设置的行为不同。 定义不清,这是我将要使用的最后一种格式。