Saltar al contenido

Recommended Posts

publicado (editado)

Hola y muy buena tarde foreros, espero puedan ayudarme por favor!!! , tengo un código que he ido puliendo, pero falta un ajuste mínimo creo, ya que no está funcionando algo, que es guardar los cambios antes de cerrarse el o los archivos de formato CSV. El proceso es el siguiente: 

1ro. Exporto desde otra plataforma muchos archivos en formato csv (separados por coma) que inician con el prefijo "Mapeo", ejemplo : Mapeo_Sistema1, Mapeo_Sistema2, etc)

2do. Ejecuto el código que pegaré más abajo,  éste está guardado en mis macros "PERSONAL.XLSB" y la ejecuto de un botón.

3ro. Se ejecuta la macro, funciona bien, excepto la instrucción donde debe guardar cada uno de los archivos csv separados por coma antes que se cierren. 

este es el código que requiere el ajuste: (también adjunto archivo con datos de ejemplo)  necesito de algún apoyo de parte de un experto del foro por favor, cualquier comentario  estaré muy agradecido.  Muchas gracias.

Sub ConvertirTextoEnColumnasGuardarComoCSV()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim fileName As String
    Dim filePath As String
    Dim csvFilePath As String
    Dim mapeoFiles As Integer
    Dim filesProcessed As Integer
    
    mapeoFiles = 0
    filesProcessed = 0
    
    ' Contar el número de archivos que comienzan con "Mapeo"
    For Each wb In Application.Workbooks
        If Left(wb.Name, 5) = "Mapeo" Then
            mapeoFiles = mapeoFiles + 1
        End If
    Next wb
    
    ' Recorrer todos los archivos abiertos
    For Each wb In Application.Workbooks
        fileName = wb.Name
        
        ' Verificar si el nombre del archivo comienza con "Mapeo"
        If Left(fileName, 5) = "Mapeo" Then
            filesProcessed = filesProcessed + 1
            
            ' Recorrer todas las hojas del libro
            For Each ws In wb.Worksheets
                ' Obtener la última fila con datos en la hoja
                lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
                
                ' Convertir texto en columnas usando coma como delimitador
                ws.Columns("A").TextToColumns Destination:=ws.Columns("A"), DataType:=xlDelimited, _
                    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
                    Tab:=False, Semicolon:=False, Comma:=True, Space:=False, _
                    Other:=False
            Next ws
            
            ' Guardar el archivo como CSV
            filePath = wb.Path
            csvFilePath = filePath & "\" & Left(fileName, Len(fileName) - Len(".xlsx")) & ".csv"
            Application.DisplayAlerts = False
            wb.SaveAs Filename:=csvFilePath, FileFormat:=xlCSV, CreateBackup:=False
            Application.DisplayAlerts = True
            
            ' Si es el último archivo, mostrar un mensaje antes de cerrar
            If filesProcessed = mapeoFiles Then
                MsgBox "Se procesaron y guardaron todos los archivos Mapeo como CSV. Se cerrará el último archivo ahora.", vbInformation
            End If
            
            ' Cerrar el archivo
            wb.Close SaveChanges:=False
        End If
    Next wb
End Sub
 

Mapeo_Sistema.csv

Editado el por soda1206
mejoré la redacción
  • soda1206 changed the title to ajuste de código (con comentarios en paso a paso) para guardar la separación por columna
publicado

Buenas, alguien quien pueda ayudarme a solucionar lo del ajuste que está faltando en tema original?? por favor...agradezco cualquier comentario.

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.