Macro Cambiar el nombre al segundo libro abierto por uno que desee

Tengo un libro de excel llamado planilla general, y muchos otros libros que voy abriendo de a uno.

Es posible hacer una macro que active el otro libro sea cua sea su nombre y me pregunte con que nombre deseo guardar ese libro como en una especie de cuadro de dialogo

2 respuestas

Respuesta
1

Primero habrá que establecer cómo sabrá la macro el nombre del segundo libro... quizás al momento de abrirlo pudieras guardar su nombre, algo como:

Set otroLibro = ActiveWorkbook     'al momento de abrir el 2do libro se convierte en el libro activo

Y luego la macro, donde debes establecer la ruta (x ahora es la misma que la del libro principal) y la extensión.

Sub cbiaNombre()
'x Elsamatilde
'ya se tiene el nombre actual del 2do libro en 1 variable
nvoNombre = InputBox("Ingresa el nuevo nombre para el libro")
ruta = ThisWorkbook.Path & "/"
extenso = ".xlsm"
If nvoNombre <> "" Then
    On Error Resume Next
    otroLibro.SaveAs ruta & nvoNombre & extenso
End If
End Sub

Sdos.

Elsa

*Te invito a visitar la sección Manuales de mi sitio... acabo de publicar el Manual 500Macros+365 (revisión y actualización completa del manual 500Macros incluyendo código apto para la versión Excel 365 + nuevos capítulos). Imperdible!

Los libros me los envían diferentes empresas y todos tienen diferentes nombre por eso no puedo establecer el nombre del libro

Está bien, pero si lo abrís desde tu libro llamado planilla general, no se si lo estás abriendo con una macro. Si es así, al abrirlo pasa a ser el libro activo y en ese caso se puede utilizar los 2 códigos que te pasé antes.

Ahora, si los abrís manualmente de a uno por vez, podrás saber su nombre con este código:

Sub cbiaNombreLibro()
Dim miLibro As String, nvoNombre As String
Dim ruta As String, extenso As String
Dim wb
'guardo el nombre del libro principal para comparar con el otro
miLibro = ActiveWorkbook.Name
For Each wb In Workbooks
    If wb.Name <> miLibro Then
        nvoNombre = InputBox("Ingresa el nuevo nombre para el libro.")
        ruta = ThisWorkbook.Path & "/"
        extenso = ".xlsm"
        If nvoNombre <> "" Then
            On Error Resume Next
            wb.SaveAs ruta & nvoNombre & extenso
        End If
    End If
Next wb
End Sub

Ahora, si vas a tener más de un libro abierto al mismo tiempo, podrás cambiarles el nombre recorriendo la totalidad de libros abiertos de este modo:

Sub cbiaNombreLibro()
Dim miLibro As String, nvoNombre As String
Dim ruta As String, extenso As String
Dim wb, sino
'guardo el nombre del libro principal para comparar con el otro
miLibro = ActiveWorkbook.Name
For Each wb In Workbooks
    If wb.Name <> miLibro Then
        sino = MsgBox("Tienes abierto el libro: " & wb.Name & ". ¿Deseas guardarlo con otro nombre?", vbYesNo, "Confirmar")
        If sino = vbYes Then
            nvoNombre = InputBox("Ingresa el nuevo nombre para el libro.")
            ruta = ThisWorkbook.Path & "/"
            extenso = ".xlsm"
            If nvoNombre <> "" Then
                On Error Resume Next
                wb.SaveAs ruta & nvoNombre & extenso
            End If
        End If
    End If
Next wb
MsgBox "Fin del proceso."
End Sub

Ajustá ruta y extensión. Si el tema queda resuelto marca una valoración o votación para darlo por cerrado. 

Sdos!

No entiendo mucho. hay manera de que te mande un par de archivos y ne ayudes?

Si. Mis correos aparecen en mi sitio que dejo al pie.

Sdos!

Te escribí por dos temas. Gracias

Dejo la estructura de la macro para los que puedan requerir algo así.

Permite abrir un libro buscándolo, y luego de realizar las tareas necesarias, se guardará con el nombre solicitado en un InputBox.

Sub abreLibro()
'x Elsamatilde
Application.ScreenUpdating = False
On Error Resume Next
Set planilla = ActiveWorkbook.Sheets("Linde")
'la variable guarda la ruta y nombre del archivo a abrir
milibro = Application.GetOpenFilename
'si la variable está vacía significa que cancelamos la ventana de diálogo
If milibro = False Then Exit Sub
'abrir el libro elegido y guardar su nombre
Workbooks.Open milibro
sdoLibro = ActiveWorkbook.Name
'-------------- tareas a realizar con este libro (copia-pega)
'.......................
'---------------
'guardar el 2do libro con otro nombre
nvoNombre = InputBox("Ingresa el nuevo nombre para el libro")
ruta = ThisWorkbook.Path & "/"
extenso = ".xlsm"
If nvoNombre <> "" Then Workbooks(sdoLibro).SaveAs ruta & nvoNombre & extenso
Workbooks(nvoNombre & extenso).Close
'al cerrar se queda en libro Planilla General
Sheets("Agregados y carga de menu").Select
Range("N33").Select
End Sub

¿Dónde dice tareas a realizar con este ibro ahí copio mi macro de lo que tiene que hacer?

Correcto. En cada botón debes cambiar lo que se encuentra dentro del marco rojo.

Te dejé tus líneas anteriores inhabilitadas, las que te devolvió la grabadora, para que te sirvan de guía en el resto de los botones. Y debes agregar las nuevas, que están en negro, pero ajustando el rango que corresponderá a cada botón.

Son muchos botones, y no se si todos realizan la misma tarea... pero con esta guía podrás hacer los cambios.

Para aquellos usuarios que siguen el hilo de esta consulta, la opción de buscar el libro para abrirlo y hacer el resto del proceso responde a la solicitud:
'... Muchos otros libros que voy abriendo de a uno....'

El día de mañana cambia el nombre de algún libro de apertura y no se tiene que ir al Editor, o a la hoja, a cambiar ese nombre.

PD) Una vez que tengas todos los botones ajustados, si alguno te falla podés volver a enviarme tu libro para revisarlo.

Sdos!

Respuesta
1

Tu comentario:

Tengo un libro de excel llamado planilla general, y muchos otros libros que voy abriendo de a uno.

Si tienes "muchos otros libros" abiertos y quieres activar un libro y renombrarlo. Entonces una opción sería poner los nombres de los libros abiertos en un ListBox dentro de un UserForm.

Ahí podrías seleccionar un libro, escribir el nuevo nombre y guardarlo con el nuevo nombre.

Te muestro la solución en el siguiente vídeo:

https://youtu.be/1mPkFZ6s-6k 

Te invito a suscribirte a mi canal de youtube para que recibas las alertas de los nuevos vídeos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas