Cómo obligar a Excel a tratar las fechas en CSV como texto en una macro

Cómo obligar a Excel a tratar las fechas en CSV como texto en una macro

Tengo una macro que permite al usuario seleccionar un archivo CSV y luego manipularlo. Sin embargo, trata las celdas que contienen cosas como 2/1/12 como una fecha. Necesito mantener estas cadenas como texto, no como fechas.

Sé que puedo hacerlo 1) iniciando una nueva hoja de trabajo 2) importando el CSV en lugar de abrirlo. Establezca la columna con las fechas en "texto" y finalice.

La pregunta es: ¿cómo puedo interrumpir Datos > Importar para que el usuario pueda seleccionar el archivo? Después de eso, la macro debería continuar configurando el formato de las columnas, finalizar la importación y realizar las manipulaciones de datos.

Editar: aquí está el código relevante de la macro tal como está:

ChDir "C:\RoomTimerData\"

MyFile = Application.GetOpenFilename("Valores separados por comas (.csv),.csv")

Libros de trabajo. Abrir nombre de archivo: = Mi archivo

Respuesta1

Por lo general, se seleccionaría el tipo de datos para cada columna importada como paso 3 de 3 del cuadro de diálogo de importación de texto. Para evitar errores de formato, simplemente usetextocomo formato, y estás bien.

Sin embargo, parece que utiliza una macro VBA para importar sus archivos CSV. Así que acabo de grabar un archivo tan incorrupto.textoimportar:

With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;C:\test.csv", Destination:=Range("$A$1"))
    .Name = "test_1"
    .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 = True
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(2, 1) 'THIS IS THE MAGIC LINE!
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With

Además, mire este ejemplo de ayuda de Excel para TextFileColumnDataTypes:

Set shFirstQtr = Workbooks(1).Worksheets(1) 
Set qtQtrResults = shFirstQtr.QueryTables _
        .Add(Connection := "TEXT;C:\My Documents\19980331.txt", _
        Destination := shFirstQtr.Cells(1, 1))
With qtQtrResults
    .TextFileParseType = xlFixedWidth
    .TextFileFixedColumnWidths = Array(5, 4)
    .TextFileColumnDataTypes = _
        Array(xlTextFormat, xlSkipColumn, xlGeneralFormat)
    .Refresh
End With

Estos son los formatos que puedes utilizar:

  • xlFormatoGeneral
  • formato de texto xl
  • xlSaltarColumna
  • Formato xlDMY
  • Formato xlDYM
  • Formato xlEMD
  • Formato xlMDY
  • Formato xlMYD
  • Formato xlYDM
  • Formato xlYMD

información relacionada