Note: The other languages of the website are Google-translated. Back to English

¿Cómo convertir por lotes múltiples archivos CSV a archivos XLS (X) en Excel?

Convertir un archivo CSV a un archivo XlS o XLSX es muy fácil para usted aplicando la función Guardar como. Sin embargo, convertir varios archivos CSV a archivos XLS o XLSX desde una carpeta requiere mucho tiempo al guardarlos uno por uno manualmente. Aquí presento un código de macro para convertir rápidamente por lotes todos los archivos CSV a archivos XLS (x) desde una carpeta.

Convierta por lotes archivos CSV a archivos XlS (X) con código de macro


Convierta por lotes archivos CSV a archivos XlS (X) con código de macro

Para convertir varios archivos CSV de una carpeta a archivos XLS (X), puede realizar los siguientes pasos:

1. Habilite un nuevo libro de trabajo, presione Alt + F11 llaves para abrir Microsoft Visual Basic para aplicaciones ventana y haga clic en recuadro > Módulo. Ver captura de pantalla:
doc convertir por lotes cvs xls 1

Nota:: Asegúrese de que todos los archivos CSV que desea convertir estén cerrados.

2. Luego, pegue el código de la macro en el Módulo guión y prensa F5 clave para ejecutar el código.

VBA: convierte CSV a XLS

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlNormal
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

3. En el cuadro de diálogo emergente, seleccione la carpeta especificada que contiene los archivos CSV que desea convertir. Ver captura de pantalla:
doc convertir por lotes cvs xls 2

4. Hacer clic en OK, todos los archivos CSV de la carpeta seleccionada se han convertido en archivos XLS.
doc convertir por lotes cvs xls 3

Consejo: Si desea convertir archivos CSV a archivos XLSX, utilice el siguiente código VBA.

VBA: convierte archivos CSV a XLSX

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

convierta o exporte rápidamente un rango de una hoja para separar XLS / Word / PDF u otros archivos de formato en una sola vez

Normalmente, Excel no lo admite con una opción para exportar o guardar rápidamente un rango como un archivo CSV o Excel. Si desea guardar un rango de datos como un CSV o un libro de trabajo en Excel, es posible que deba usar una macro de VBA para hacer esto o copiar el rango al portapapeles y pegarlo en un nuevo libro de trabajo y luego guardar el libro de trabajo como CSV o Libro de trabajo. Kutools for Excel aumenta Excel con Exportar rango a archivo utilidad para usuarios de Excel que desean procesar rápidamente las siguientes operaciones:  Haga clic para 30-día de prueba gratuita con todas las funciones!
doc exportar rango de celdas a archivo
 
Kutools for Excel: con más de 300 prácticos complementos de Excel, gratis para probar sin limitación en 30 día.

Artículos relativos:


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior
Comentarios (38)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
Quiero hacer lo contrario: convertir XLS a CSV. funciona este guion?
Sub CSV a XLS ()
'Actualizar porExtendoffice20170814
Dim xFd como archivo de diálogo
Dim xSPath como cadena
Dim xXLSFile como cadena
Dim xWsheet como cadena
Application.DisplayAlerts = False
Aplicación.StatusBar = Verdadero
xWsheet = ActiveWorkbook.Nombre
Establecer xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = "Seleccione una carpeta:"
Si xFd.Show = -1 Entonces
xSPath = xFd.Elementos seleccionados(1)
otro
Exit Sub
Si terminar
Si Derecha(xSPath, 1) <> "\" Entonces xSPath = xSPath + "\"
xXLSFile = Dir(xSPath & "*.xls")
Hacer mientras xXLSFile <> ""
Application.StatusBar = "Convirtiendo: " & xXLSFile
Libros de trabajo. Nombre de archivo abierto: = xSPath & xXLSFile
ActiveWorkbook. Guardar como reemplazo (xSPath y xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
ActiveWorkbook.Close
Windows(xWsheet).Activar
xXLSFile = Dir
Red ISTE Loop
Aplicación.StatusBar = Falso
Application.DisplayAlerts = True
End Sub
Este comentario fue minimizado por el moderador en el sitio
Sub ConvertirCSVToXlsx()



Atenuar mi archivo como cadena

Dim oldfname como cadena, newfname como cadena

archivo de trabajo oscuro

Dim folderName como cadena



Application.DisplayAlerts = False

Application.ScreenUpdating = False



'Capturar el nombre del archivo actual

miarchivo = LibroActivo.Nombre



' Establece el nombre de la carpeta para trabajar

nombreDeCarpeta = "D:\tmp\"



' Recorrer todos los archivos CSV en la carpeta

archivo de trabajo = Dir(nombreCarpeta & "*.CSV")

Hacer mientras archivo de trabajo <> ""

'Abrir archivo CSV

Workbooks.Open Filename:=folderName & workfile

' Capturar el nombre del antiguo archivo CSV

oldfname = ActiveWorkbook.FullName

' Convertir a XLSX

newfname = folderName & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".xlsx"

ActiveWorkbook.SaveAs Filename:=newfname, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=True

ActiveWorkbook.Close

' Eliminar el archivo CSV antiguo

Matar nombre antiguo

Windows(miarchivo).Activar

archivo de trabajo = Dir()

Red ISTE Loop



Application.DisplayAlerts = True

Application.ScreenUpdating = True



End Sub
Este comentario fue minimizado por el moderador en el sitio
"Sugerencia: si desea convertir archivos CSV a archivos XLXS, solo necesita cambiar .xls a .xlsx en la macro ActiveWorkbook.SaveAs Replace (xSPath & xCSVFile, ".csv", ".xls", vbTextCompare)".

Intenté esto y Excel no pudo abrir los archivos resultantes. Recibí el siguiente mensaje: "Excel no puede abrir el archivo 'nombre de archivo.xlsx' porque el formato o la extensión del archivo no son válidos. Verifique que el archivo no esté dañado y que la extensión del archivo coincida con el formato del archivo".

Sin embargo, la secuencia de comandos se convirtió correctamente a .xls.
Este comentario fue minimizado por el moderador en el sitio
No encontré ese problema antes, gracias por tu correcto comentario. He corregido el tip.
Este comentario fue minimizado por el moderador en el sitio

Este comentario fue minimizado por el moderador en el sitio
Muchas gracias por su excelente script para CSV a XLS. Es mucho más útil para mi trabajo.
Este comentario fue minimizado por el moderador en el sitio
Hola,

Su secuencia de comandos es excelente, pero no convierte el csv separado por punto y coma. ¿Puedes publicar una solución para esos?

Gracias
Este comentario fue minimizado por el moderador en el sitio
Lo siento, aquí no tengo ninguna solución, tal vez puedas enviar tu pregunta a nuestro foro, alguien más puede ayudarte. https://www.extendoffice.com/forum.html
Este comentario fue minimizado por el moderador en el sitio
Podría llegar tarde. Acabo de recibir el problema en el que necesitaba convertir los archivos CSV de punto y coma y agregué esto al código y funcionó. Espero que esto ayude a alguien.

Cambie 'Workbooks.Open Filename:=xSPath & xCSVFile' por este 'Workbooks.Open Filename:=xSPath & xCSVFile, Delimiter:=";", Local:=True'
Este comentario fue minimizado por el moderador en el sitio
Utilicé el archivo multiple csv a multiple xls pero los archivos xls de csv tienen errores; información separada pero se unen en celdas. ¿Cómo se puede solucionar esto?
Este comentario fue minimizado por el moderador en el sitio
El código no admite el archivo csv con comas separadas.
Este comentario fue minimizado por el moderador en el sitio
Cuando di el nombre de la carpeta, el programa dijo: "Ningún archivo coincide con su búsqueda". Pero hay 2,609 archivos .csv en la carpeta
Este comentario fue minimizado por el moderador en el sitio
El código no es compatible con el archivo csv de coma separado, ¿son sus archivos en este caso?
Este comentario fue minimizado por el moderador en el sitio
Hola,

un gran artículo - ¡gracias! Casi funciona para mí.

Aquí está el problema: tengo un archivo csv delimitado por tuberías. Cambié el delimitador de ventanas predeterminado (a través del panel de control/configuración regional) a "|". Entonces, cuando abro el archivo csv con Excel, se abre, lee directamente y analiza los campos en columnas correctamente. Todo lo que tengo que hacer es guardar como xls o xlsx, y listo. Cuando miro su código, eso debería ser lo que hace el código: abre los archivos csv en una carpeta, los guarda como xls o xlsx, y los recorre.

Aquí está el problema: cuando abro esos archivos de Excel, los delimitadores de tubería todavía están allí, no se analiza nada en las columnas. Este era el comportamiento anterior a mi cambio a la configuración predeterminada delimitada por tubería en la configuración de Windows. Entonces parece que Excel no usa esa configuración de Windows. Verifiqué esto reemplazando los delimitadores de tubería con delimitadores de coma en una copia del archivo: de los dos archivos, el delimitado por tubería permaneció sin analizar, el delimitado por coma se convirtió correctamente.

¿Alguna idea de dónde se puede encontrar o cambiar esa delimitación de coma incorporada en Excel, o si hay una forma en el código para hacerlo? Preferiría NO tener que hacer una búsqueda y reemplazar, luego guardar...

Gracias, HC
Este comentario fue minimizado por el moderador en el sitio
Si desea dividir los datos en columnas según el delimitador de tubería en Excel, simplemente use la función Texto a columnas para dividir los datos por/después de convertir los archivos csv a xls.
Este comentario fue minimizado por el moderador en el sitio
Realmente no hace que el código sea útil para archivos de Excel.
Este comentario fue minimizado por el moderador en el sitio
Hola, excelente secuencia de comandos que funcionó para mí después de probar todas las demás secuencias de comandos disponibles en Google. He agregado algunas líneas más que realizan la operación de texto a columnas que quiero. ¿Alguien puede ayudarme a modificar el script especificando la ubicación de la carpeta en el disco local en lugar de abrir el cuadro de diálogo, ya que en realidad estoy automatizando el sistema?
. Gracias por adelantado
Este comentario fue minimizado por el moderador en el sitio
Hi
Podrías compartir el script que realiza el texto a columnas??
Atentamente
Este comentario fue minimizado por el moderador en el sitio
Gran secuencia de comandos después de buscar todas las demás secuencias de comandos disponibles en Google. ¿Alguien puede ayudar a modificar este script especificando una ubicación de carpeta en la unidad local en lugar de permitir que abra el cuadro de diálogo, ya que en realidad estoy automatizando el sistema? Gracias por adelantado
Este comentario fue minimizado por el moderador en el sitio
Un poco de código genial. Muy útil. Si no me equivoco, el código para .xlsx tiene el mismo aspecto que el código .xls.

Esta línea:
ActiveWorkbook. Guardar como reemplazo (xSPath y xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault

Supongo que debería ser: ".csv", ".xlsx", vbTextCompare, etc.
Este comentario fue minimizado por el moderador en el sitio
He cambiado el código así, descrito arriba; ahora el script funciona como se esperaba: genera archivos xlsx
Este comentario fue minimizado por el moderador en el sitio
no, no lo has hecho. todavía dice xls en ambas versiones.
Este comentario fue minimizado por el moderador en el sitio
esta macro no muestra mi archivo csv
Este comentario fue minimizado por el moderador en el sitio
Un pequeño problema con este código es que se puede perder cierta precisión (número de decimales) al abrir un csv y guardarlo como xlsx.
La forma de evitar esto es seleccionar todas las celdas justo después de abrirlas, establecer el número de lugares decimales en la cantidad deseada (15 para mí personalmente) y *luego* guardar como xlsx

De lo contrario, el xlsx tiene menos detalles (menos precisión en términos de decimales) que el csv original, lo que puede generar problemas en algunas aplicaciones.
Este comentario fue minimizado por el moderador en el sitio
cambia el formato de mi columna de fecha de dd-mm-yyyy a dd/mm/yyyy, alguien puede ayudarme a evitar que este script cambie los formatos de columna.
Muchas gracias.
Este comentario fue minimizado por el moderador en el sitio
Hola, viper, después de la conversión, puede volver a formatearlas, seleccione las fechas y haga clic con el botón derecho para elegir Formato de celdas en el menú contextual, en el cuadro de diálogo Formato de celda, en la pestaña Número, haga clic en Personalizado en la lista Categoría, luego escriba mm-dd- yyyy en el cuadro de texto en la sección derecha. O si tiene Kutools para Excel, aplique Aplicar formato de fecha para cambiar el formato de fecha según lo necesite.
Este comentario fue minimizado por el moderador en el sitio
Excelente artículo. ¿Cómo puedo guardar todos los archivos convertidos en una nueva ubicación? ¿Puedes actualizar el código y enviármelo? Como permitir que el usuario elija su carpeta de destino.


Muchas Gracias
Este comentario fue minimizado por el moderador en el sitio
Tienes un error en la linea 22 del csv a xlsx
Con error: ActiveWorkbook.SaveAs Replace (xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault
Corregido: ActiveWorkbook.SaveAs Replace (xSPath & xCSVFile, ".csv", ".xslx", vbTextCompare), xlWorkbookDefault
Este comentario fue minimizado por el moderador en el sitio
Gracias por tu recordatorio, lo he actualizado, gracias de nuevo.
Este comentario fue minimizado por el moderador en el sitio
Recibo un error "Variable de objeto o con variable de bloque no establecida" para esta línea:
xFd.Title = "/Users/[my.name]/Documents/[myFolder]" >> esta es la ruta de una carpeta en particular en mi computadora donde estoy haciendo la conversión (la carpeta tiene un montón de archivos csv dentro )

¿Estoy haciendo algo mal aquí?
Este comentario fue minimizado por el moderador en el sitio
Esto funciona para mí, pero la extensión del archivo no cambia. ¿Algun consejo?
Este comentario fue minimizado por el moderador en el sitio
Lo mismo para mí: todos los archivos siguen siendo .csv.
Este comentario fue minimizado por el moderador en el sitio
Todos los archivos csv que elija se han guardado como nuevos archivos de Excel, los archivos originales (csv) no cambian, existen nuevos archivos de Excel con el mismo contenido.
Este comentario fue minimizado por el moderador en el sitio
Yo tuve el mismo problema. Si su archivo fuente tiene una extensión en mayúsculas (.CSV), no funciona. Simplemente reemplace .csv a .CSV en el código en la línea 22 y luego debería funcionar. Bueno, al menos para mí lo hizo.
Este comentario fue minimizado por el moderador en el sitio
¿Cómo incorporaría el código en la rutina del archivo por lotes XLSX para separar los datos en columnas separadas por punto y coma? El código compartido convierte el archivo de .csv a .xlsx, pero no separa los datos en columnas separadas.
Este comentario fue minimizado por el moderador en el sitio
si, no es trabajo.
Este comentario fue minimizado por el moderador en el sitio
buenos dias compañeros

Adiciona a lo que hace el guión, quisiera poder convertir inmediatamente el texto en columnas, por la opción que no está delimitado por ningún tipo de carácter, adicional los tamaños de las columnas son diferentes. Vale la pena aclarar que si tomo cada archivo por separado y le aplico la opción de texto en columnas, bajo esa opción los puedo convertir sin problemas, abriéndolos uno por uno, pero si grabo esa macro y le aplico la misma macro a todos, inclusive usando la opción de "USAR REFERENCIAS RELATIVAS", no hace el proceso bien, porque el graba las posiciones de la delimitación del archivo que uso de ejemplo, pero necesito que lo aplique nuevo a cada archivo, es decir, como si abriera cada archivo nuevo y le hizo manualmente la opción de delimitación y no aplique los valores de ubicación de las columnas identificadas en el archivo ejemplo.

Ya inserte esa opción en este archivo, sin embargo pasa lo que indica en las líneas arriba, solo requiero saber cómo puedo hacer para aplicar la conversión a cada archivo, aplicando la delimitación del campo como su fuera un archivo nuevo.


Libros de trabajo. Nombre de archivo abierto: = xSPath & xCSVFile
ActiveWorkbook. Guardar como reemplazo (xSPath y xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault

ESTA PARTE ES LA QUE AGREGA APLICANDO EL FORMATO DEL TEXTO A COLUMNAS

StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(18 _
, 1), Matriz(38, 1)), Números Menos Finales:=Verdadero
ActiveCell.Cells.Select
ActiveCell.Cells.EntireColumn.AutoFit
ActiveCell.Offset(1, 0).Rango("A1").Seleccionar
ActiveWorkbook.Guardar

HASTA AQUI AGREGUE YO

ActiveWorkbook.Close
Windows(xWsheet).Activar
xCSVFile = Dir

Red ISTE Loop
Aplicación.StatusBar = Falso
Application.DisplayAlerts = True
End Sub

No se si me hago explicar bien, pero es mi problema.
No hay comentarios publicados aquí todavía
Ver más
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Seguinos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL