martes, 29 de abril de 2014

Cambiar la versión de varios archivos al mismo tiempo


Hace unos minutos me consultaron lo siguiente por el chat del Gmail (Hangout):

"...Soy administrador de una red y estoy buscando como migrar 200 archivos Excel 2003 a 2007... Quería ver si existe alguna macro que cambie la extensión de los archivos dentro del Excel, espero ser claro.."
Mi respuesta inicial es no lo sé, pero luego recordé que cuando desarrollaba aplicaciones en VBA para una empresa como Freelancer, desarrolle varias con manejos de archivos.

Entonces empecé a revisar un proyecto, luego otro, copiar código de aquí, probar por acá... y llegué a la siguiente solución, la cual explicaré paso a paso (por partes como diría Jack el destripador):

Paso 1: He creado 3 archivos de Excel y los he guardado en una versión 2003 y los he colocado dentro de una carpeta.


Paso 2: En un libro nuevo de Excel, ingreso al Visual Basic (ALT + F11) e inserto un módulo (Menú Insertar, opción Módulo)



Paso 3: En el módulo creado copio el siguiente código:

Sub CambiaVersion()
    Dim LibroActual As Workbook 'archivo a abrir
    Application.ScreenUpdating = False  
    ArchivosSeleccionados = Application.GetOpenFilename(, , , , True)
    CantidadArchivos = UBound(ArchivosSeleccionados)
    If CantidadArchivos > 0 Then
      For I = 1 To CantidadArchivos
        nombrearch = ArchivosSeleccionados(I)
        Set LibroActual = Workbooks.Open(nombrearch)
        nombretmp = LibroActual.Name
        Posicion = Application.WorksheetFunction.Search(".", nombretmp)
        nombretmp = Left(nombretmp, Posicion - 1)
        nombretmp = nombretmp & "_2010"  'Esto le agrega al final de cada nombre _2010
        LibroActual.SaveAs Filename:=nombretmp, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        LibroActual.Close False
      Next I
    End If
    Application.ScreenUpdating = True
    MsgBox "Se actualizaron de version a " & CantidadArchivos & " archivos."
End Sub

Paso 4: Cierro el Visual Basic y regreso al Excel. Ya dentro del Excel inserto un objeto cualquiera en mi hoja actual.


Como pueden apreciar en la imagen simplemente le escribí un texto dentro del objeto. Luego hago clic derecho en el objeto y selecciono la opción "Asignar Macros"


Finalmente hacemos clic en Aceptar, para luego hacer en clic en cualquier celda, y listo.

Paso 5: Hacemos clic en nuestro botón (objeto) y nos preguntará que archivos queremos abrir, podemos seleccionar todos al mismo tiempo y hacemos clic en abrir


Y listo


Espero que le sirva