Cómo exportar una columna de Excel y ejecutar un archivo batch con VBA

Si necesitas automatizar tareas repetitivas, como mover datos desde una hoja de cálculo hacia un archivo externo, una macro de VBA es la solución perfecta. En este ejemplo, mostramos cómo crear un script que copie todas las celdas no vacías de una columna específica y las guarde en un archivo de texto plano.

Pantalla mostrando una columna resaltada en Excel y un archivo de texto abierto con los datos extraídos.
Vista de la hoja de cálculo y el archivo generado.

El siguiente paso es ejecutar automáticamente un archivo .bat al finalizar el proceso. Esto permite encadenar acciones, como iniciar una aplicación o limpiar archivos temporales justo después de que los datos se hayan exportado.

Instrucciones para la implementación

Abrirás el editor de VBA presionando Alt + F11, insertarás un nuevo módulo y pegarás el código proporcionado. Es crucial que personalices las rutas del archivo .txt y del .bat en el código para que coincidan con tu sistema operativo.

Código VBA

A continuación, el bloque de código listo para copiar:

Sub ExportarColumnaYejecutarBAT()
    Dim ws As Worksheet
    Dim columna As String
    Dim rutaArchivoTXT As String
    Dim rutaArchivoBAT As String
    Dim celda As Range
    Dim textoFinal As String
    Dim archivo As Integer

    ' Configuración
    Set ws = ThisWorkbook.Sheets(1)
    columna = "A"
    rutaArchivoTXT = "C:rutaarchivo.txt"
    rutaArchivoBAT = "C:rutaarchivo.bat"

    ' Leer valores de la columna y construir el texto
    For Each celda In ws.Range(columna & "1:" & columna & ws.Cells(ws.Rows.Count, columna).End(xlUp).Row)
        If Not IsEmpty(celda.Value) Then
            textoFinal = textoFinal & celda.Value & vbCrLf
        End If
    Next celda

    ' Guardar en archivo de texto
    archivo = FreeFile
    Open rutaArchivoTXT For Output As #archivo
    Print #archivo, textoFinal
    Close #archivo

    ' Ejecutar el archivo BAT
    Shell rutaArchivoBAT, vbNormalFocus
End Sub

Si la macro no ejecuta el .bat, es posible que tengas problemas de seguridad o permisos. Asegúrate siempre de que el archivo de texto se haya escrito completamente antes de intentar leerlo en tu script de lotes.