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