Mise en forme de la date Excel avec des marques de hachage pour une raison quelconque

Le problème

J'ai un programme VBA qui exporte des données d'un file Excel vers un CSV. Lorsqu'il s'agit d'une date, il le forme comme #2016-06-14# . Je suppose que les marques de hachage (ou le signe d'octothorpe ou de livre ou le hashtag) sont destinés à indiquer que le champ est un champ de date. Mais, lorsque je importerai le CSV dans un autre classur, la date ne sera pas disponible, quelle que soit la façon dont je formate le champ. Il contient toujours les # caractères.

La question

Comment puis-je get la colonne de date à importer en tant que date de format YMD?

annexe

Voici un code que j'utilise pour exporter et importer, à titre de reference.

Exportation

 Sub WriteCSV(writeRange As Range, fileName As Ssortingng) Dim myFile As Ssortingng, 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 

Importer

 Sub ReadCSV(targetCell As Range, filePath As Ssortingng) 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 

Essayez de produire .text au lieu de .value.

Change ça:

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

pour ça:

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

Jeter ces # .
Lorsque je Save as manuellement en Save as que file CSV, Excel ne place PAS ces # autour des dates. Au lieu de cela, il écrit les dates telles qu'elles sont définies dans mes parameters régionaux (c'est-à-dire – pour moi – dd/mm/yyyy ).
Et lors de l'import arrière, l'enregistreur a utilisé le tableau (… 4 …) pour la colonne de date, et il a été importé correctement.
Quoi qu'il en soit, CSV est vraiment un piège si vous travaillez dans un environnement international puisqu'il se comporte différemment selon les parameters locaux de la machine. Étant mal défini, c'est le dernier format que j'utiliserais.