Hola saludos desde la laguna, es bueno saber que ´habemos más méxicanos con dudas, pense que solo habian hermanos latinos de otros paises.
Bueno pasando a lo interesante hay varias cosillas que veo en tu codigo en primera:
para abrir un libro tienes que poner el siguiente codigo:
Workbooks.Open ("Path")
----->>> donde Path es un termino que utilizamos en la programación para referirnos a la direccion en que esta el archivo, es decir, su ubicación, por ejemplo supongamos que tu tienes tu archivo verde.xls en la carpeta "Mis documentos" para abrir dicho archivo debes proporcionar lo siguiente:
Workbooks.Open ("C:Mis Documentosverde.xls")
--->>Para saber la hubicación exacta de tu archivo, solamente bre la careta en la que se encuentra y fijate en la barra de direcciones, copiala y pegala en tu codigo en la parte que dice "Path"
despues, antes de seleccionar un rango primero debes activar el libro y la hoja en la que se encuentra el rango deseado, por ejemplo:
Workbooks("nombre del libro").Worksheets("nombre de la hoja").Activate
--->>Supongamos que la hoja de tu libro verde.xls se llama: "Hoja1", entonces pondremos lo siguiente:
Workbooks("verde.xls").Worksheets("Hoja1").Activate
Para seleccionar un rango, es mas factible hacerlo apropiadamente en vez de la forma abreviada, ahhh y para poder usar el range, antes que nada debes de proporcionar el objeto que contiene al range, que en este caso es la Hoja1, por ejemplo usa lo siguiente:
Worksheets("Hoja1").Range(Cells(ren,col), Cells(ren,col))
si te fijas el metodo Range tiene un par de Cells, bueno pues cada Cells equivale a una celda en especifico, donde "ren" es igual al numero del renglon y "col" al numero de la columna, recuerda que la columna "A" es la primer columna, es decir, es "1", "B" = "2" y así susecibamente.
Despues de lo anterior practicamente ya tenemos todo lo necesario para realizar lo que deseas.
otro detalle que veo en tu codigo es que seleccionas un rango, lo copias y lo pegas en el otro libro, pero nunca te encargaste de especificarle en que rango lo deseas pegar?
para copiar y pegar rangos entre diferentes Hojas que pertenescan a un mismo libro o en hojas de diferentes libros es mejor usar variable para especificar la selección que voy a copiar, así como el rango en que la voy a pegar, por ejemplo:
supongamos que tu deseas pegar la selección copiada de verde.xls en la Hoja1 de rojo.xls en las celdas A1, A2:
Set Rango1 = Worksheets(Hoja1).Range(Cells(1,1),Cells(2,1))
Workbooks("rojo.xls").Worksheets("Hoja1").Activate
Set Rango2=Worksheets(Hoja1).Range(Cells(1,1), Cells(2,1))
Rango1.Copy Rango2
---->>"Set" es una palabra reservada que nos permite declarar una variable, así como asignarle algún valor.
para cerrar el libro verde.xls, simplemente hacemos lo siguiente:
Workbooks("verde.xls").Activate
Workbooks("verde.xls").Close savechanges:=True
si te fijas tiene una variable llamada "savechanges", que significa guardar los cambios, es decir si esta en "true" guardaa los cambios antes de cerrar el libro, y si esta en "false", no guardara los cambios.
bien, en con eso terminamos, ahora simplemente hay que ensamblar lo anterior, tu codigo deberia de quedar parecido a lo siguiente:
Workbooks.Open ("C:Mis Documentosverde.xls")
Workbooks("verde.xls").Worksheets("Hoja1").Activate
Set Rango1 = Worksheets(Hoja1).Range(Cells(1,1),Cells(2,1))
Workbooks("rojo.xls").Worksheets("Hoja1").Activate
Set Rango2=Worksheets(Hoja1).Range(Cells(1,1), Cells(2,1))
Rango1.Copy Rango2
Workbooks("verde.xls").Activate
Workbooks("verde.xls").Close savechanges:=True
lo anterior claro esta que va dentro de tu botón
workbooks, es un objeto del tipo libro, mientras que worksheets es un objeto del tipo hojas
por ende un objeto workbokss, contiene uno o más objetos worksheets, pero no a la inversa.
Bueno paisano espero te sirva mi explicación, debo mencionarte que lo anterior no es la unica forma de realizar lo que quieres, recuerda que siempre se puede realizar la misma tarea de diferente forma, decidí solo explicarte de una manera, pues si lo hago de varias formas, tal vez te confunda, además es mucho más satisfactorio cuando tu encuentra la solución, aunque no simpre es facil; de cualquier forma bienvenido al mundo de la programación, en especial al de las macros en Excel, cualquier duda que tengas, me la puedes hacerllegar a mi mail, y te prometo que la contestare a la brevedad posible, nuebamente saludos,
y exito!!!, pues la suerte es para los perdedores.
Atte:Edgardo Meía.