Eu tenho uma macro que permite ao usuário selecionar um arquivo CSV e depois manipulá-lo. No entanto, ele trata células que contêm coisas como 1/2/12 como uma data. Preciso manter essas strings como texto, não como datas.
Eu sei que posso fazer isso 1) iniciar uma nova planilha 2) importar o CSV em vez de abri-lo. Defina a coluna com as datas como "texto" e finalize.
A questão é: como posso interromper Dados > Importar para que o usuário possa selecionar o arquivo. Depois disso, a macro deverá continuar definindo o formato das colunas, finalizar a importação e realizar as manipulações dos dados.
Editar: aqui está o código relevante da macro tal como está:
ChDir "C:\RoomTimerData\"
MeuArquivo = Application.GetOpenFilename("Valores separados por vírgula (.csv),.csv")
Pastas de trabalho.Open fileName:=MeuArquivo
Responder1
Normalmente seria selecionado o tipo de dados para cada coluna importada como etapa 3 de 3 da caixa de diálogo de importação de texto. Para evitar formatação incorreta, basta usartextocomo formato, e você está bem.
No entanto, você parece usar uma macro VBA para importar seus arquivos CSV. Então acabei de gravar um arquivo tão incorruptotextoimportar:
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
Além disso, veja este exemplo do Excel-help 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
Estes são os formatos que você pode usar:
- xlGeneralFormat
- xlTextFormat
- xlSkipColumn
- xlDMYFormat
- xlDYMFormat
- xlEMDFormat
- xlMDYFormat
- xlMYDFormat
- xlYDMFormat
- xlYMDFormat