Ficheros CSV |
Responder |
Autor | ||||||||||||||||||||||||||||
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
Tema: Ficheros CSV Enviado: 05/Octubre/2021 a las 19:44 |
|||||||||||||||||||||||||||
Windows_10 vs Access_2010 Buebas tardes Mi consulta trata de como importar por código un fichero csv a una tabla Trato de importar los campos que vienen entre comillas y que estan separados por comas El problema se me presenta en aquellos campos numéricos que tambien tienen la coma FECHA Importe Titular "02/04/2021","112,14","HBO Nordic AB" Primero Limpio las comillas y me quedaria algo asi 02/04/2021,112,14,HBO Nordic AB El problema es cuando trato de usar split con la "," como delimitador me separaria el número decimal en dos campos. De momento solo pude hacerlo por medio de una importacion guardada Saludos
|
||||||||||||||||||||||||||||
SkaryBlondi
Habitual Unido: 24/Octubre/2020 Localización: Asturias Estado: Sin conexión Puntos: 89 |
Enviado: 05/Octubre/2021 a las 20:31 | |||||||||||||||||||||||||||
Buenas noches desde la Villa Si abres excel y abres la grabadoras de macros y luego importas el fichero delimitado te va a dar un código válido que con pequeñas modificaciones lo podrás implantar luego en access. Generé un CSV con los siguientes datos de casos Covid
Lo importé en Excel y la grabadora de macros me generó el siguiente código. Sub Macro1()
' ' Macro1 Macro ' ' With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Users\usuario\Downloads\Casos Covid.csv", Destination:=Range("$A$1") _ ) .Name = "Casos Covid" .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(4, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub Editado por SkaryBlondi - 05/Octubre/2021 a las 20:32 |
||||||||||||||||||||||||||||
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
Enviado: 05/Octubre/2021 a las 21:02 | |||||||||||||||||||||||||||
Hola SkaryBlond Ya lo tengo hecho en una importación guardada en acces que la ejecuto con la instruccion DoCmd.RunSavedImportExport ("Nuevos_PagosPal_Importable") y ya me guarda los datos en la tabla y funciiona correctamente. El truco en las especificaciones de la importación está en poner el "." y no la "," como separador decimal Luego la traspaso a Excel con... DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9 Y envio la excel a un tercero, que es lo que necesito. Trato de hacerlo por codigo al igual que con otros ficheros ".txt" para no tener que ir creando y guardando las importaciones. Saludos y gracias por tu tiempo Editado por main - 06/Octubre/2021 a las 13:12 |
||||||||||||||||||||||||||||
emiliove
Administrador Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5694 |
Enviado: 05/Octubre/2021 a las 23:24 | |||||||||||||||||||||||||||
Hola Main
Primero Reemplazas las comillas con algo "," por "-" "02/04/2021"-"112,14"-"HBO Nordic AB" Y después reemplazas la coma por el punto "02/04/2021"-"112.14"-"HBO Nordic AB" Y por último los guiones y comillas por comas "02/04/2021,112.14,HBO Nordic AB" Has intentado usar la función STR como dice Emilio Sancha Concatenación de cadenas y construcción de sentencias SQL (mvp-access.es) Saludos.
|
||||||||||||||||||||||||||||
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
Enviado: 06/Octubre/2021 a las 00:38 | |||||||||||||||||||||||||||
Hola emilove Al final me decidi por algo parecido Private Sub Comando2_Click() Dim S As String, Newtxt As String Open "C:\MiDespacho\PLANTILLAS\Pal_Importable.CSV" For Input As #1 S = Input(LOF(1), #1) Newtxt = Replace(S, Chr(34) & ",", "|") Close #1 Debug.Print Replace(Newtxt, Chr(34), "") End Sub y me queda cada registro asi 02/04/2021|11:21:42|CEST|HBO Nordic Y ahora ya puedo utilizar split sin problemas Se puede hacer de una pasada uniendo los Replace Newtxt = Replace(Replace(S, Chr(34) & ",", "|"), Chr(34), "") Gracias por interesarte Se puede cerrar el tema Editado por main - 06/Octubre/2021 a las 00:57 |
||||||||||||||||||||||||||||
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |