Saltar al contenido

Cambiar entre libros, sin conocer los nombres


Recommended Posts

publicado

Hola a todos

Tengo un formulario en una hoja excel, donde las personas ingresan su Nombre, Rut e Información de cada área. La macro copia las celdas con la información y las pega en un archivo consolidado que esta en un disco en la red.

La macro hace todo lo que tiene que hacer, y funciona bien, pero no pensé que alguien cambiaría el nombre del archivo, y cuando paso esto, la macro se cae.

El código es súper simple pero no se como corregirlo, se los dejo a continuación:

Range("A3:D3").Select

ChDir "Y:\Publico\SRubio\Informacion Areas"

Workbooks.Open FileName:= _

"Y:\Publico\SRubio\Informacion Areas\Consolidado.xlsx"

Windows("Encuesta Clima Laboral.xlsm").Activate

Range("E2").Select

Selection.Copy

Windows("Consolidado.xlsx").Activate

El archivo se entrego como "Encuenta Clima Laboral.xlsm", y si alguien lo guarda como "copia" o pone su nombre o cualquier cosa, la macro se cae en esta linea: "Windows("Encuesta Clima Laboral.xlsm").Activate"

¿Como puedo saber el nombre con que el usuario guardo el archivo, ese dato guardarlo en una variable, y en ves de llamar al archivo como lo tengo actualmente, llamar la variable? o si alguien tiene una mejor idea, se los agradecería.

Saludos.-

publicado

ThisWorkbook hace referencia al libro que está ejecutando la macro, inténtalo así:

Range("A3:D3").Select
Workbooks.Open Filename:="Y:\Publico\SRubio\Informacion Areas\Consolidado.xlsx"

ThisWorkbook.Activate '<================

Range("E2").Select
Selection.Copy
Workbooks("Consolidado.xlsx").Activate
[/CODE]

.

publicado

Hola Macro Antonio

Gracias por la ayuda, pero no funciono como me dijiste, por alguna razón la macro selecciona algunas celdas, se cambia de libro al consolidado, pega los datos, vuelve al libro anterior, selecciona otras celdas, va al consolidado, pega los datos, graba los cambio y cierra el consolidado.

En ese ir y venir, si el usuario cambiaba el nombre del archivo, se caía la macro.

Lo que si, ese código me dio una idea, y buscando en Internet logre hacer algo que sirvió a mi necesidad, es lo siguiente:

Range("A3:D3").Select

LibroUsuario = ActiveWorkbook.Name

ChDir "Y:\Publico\SRubio\Informacion Areas"

Workbooks.Open FileName:= _

"Y:\Publico\SRubio\Informacion Areas\Consolidado.xlsx"

Windows(LibroUsuario).Activate

Range("E2").Select

Selection.Copy

Windows("Consolidado.xlsx").Activate

Cuando el usuario abre el archivo que contiene la macro, antes de que abra el archivo consolidado, grabo el nombre del archivo en la variable "LibroUsuario", y así me aseguro de tener el nombre que sea que le haya puesto el usuario al formulario, y luego lo llamo con la linea "Windows(LibroUsuario).Activate"

Muchas gracias igual por la ayuda y el tiempo prestado.

Saludos.-

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • 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.