Foros del Web » Soporte técnico » Ofimática »

Macro en excel para copiar graficos

Estas en el tema de Macro en excel para copiar graficos en el foro de Ofimática en Foros del Web. Hola a todos! Estoy rompiendome la cabeza para hacer una macro que me copie una hoja de excel con un gráfico que va cambiando segun ...
  #1 (permalink)  
Antiguo 08/05/2006, 02:14
 
Fecha de Ingreso: mayo-2006
Mensajes: 4
Antigüedad: 17 años, 11 meses
Puntos: 0
Macro en excel para copiar graficos

Hola a todos! Estoy rompiendome la cabeza para hacer una macro que me copie una hoja de excel con un gráfico que va cambiando segun cambias un dato en otra hoja.

El cambio del dato ya lo tengo solucionado, lo que no me funciona es copiar la hoja con el gráfico cambiado, lo necesito para tener hojas de con el grafico de todos los datos sin tener que hacerlo a mano, es que son mas de 300 graficos los que deberia copiar...

la macro que tengo hecha por ahora, funcionando los datos es la siguiente:

Sub Macro1()

For k = 3 To 340

Cells(6, 22).Value = k
Range("V7").Select

Next k

End Sub

La hoja en que estan los datos que deben cambiarse para que cambie el gráfico es la hoja2 y se llama "P1" y la hoja donde se encuentra el gráfico es la hoja17 y se llama "graficos1".

Muchas gracias....

Saludos...
  #2 (permalink)  
Antiguo 08/05/2006, 02:59
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Windows("ORIGEN.xls").Activate ' si tienes dos libros (origen y destino)
Worksheets("Hoja1").Activate ' la hoja donde tienes los datos
Cells.Select ' selecciono toda la hoja
Selection.Copy ' la copio
Windows("DESTINO.xls").Activate ' abro el libro destino
Worksheets("Hoja1").Activate ' hoja donde quiero copiarlo
Cells.Select ' selecciono toda la hoja, para que el área de copia sea igual
ActiveSheet.Paste ' pego el contenido

Esto te debería funcionar. Si no te copia el gráfico, asegurate que en las propiedades del mismo este activado el "mover, pero no cambiar tamaño con las celdas" porque suele estar "No mover, ni cambiar tamaño con las celdas"

Un saludo
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #3 (permalink)  
Antiguo 08/05/2006, 03:39
 
Fecha de Ingreso: mayo-2006
Mensajes: 4
Antigüedad: 17 años, 11 meses
Puntos: 0
Y cmo hago para crear nuevas hojas? necesito crear una hoja nueva cada vez que copie el grafico para pegarlo en cada hoja creada...
  #4 (permalink)  
Antiguo 08/05/2006, 04:04
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Sheets("Ultima").Select ' ponerte en la última hoja que tengas
Sheets.Add ' añade una hoja más
ActiveSheet().Name = "Nombre hoja" ' asigna el nombre que tomará la nueva hoja
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #5 (permalink)  
Antiguo 08/05/2006, 04:35
 
Fecha de Ingreso: mayo-2006
Mensajes: 4
Antigüedad: 17 años, 11 meses
Puntos: 0
Vale genial, solo me keda saber como puedo incluir en el for to, en la sentencia de nombrar cada nueva hoja, una numeración o lo k sea para ir nombrando las 300 hojas que tengo k crear y seleccionarlas luego para pegar las celdas que necesito, todo dentro del for to para que lo haga la macro al ejecutarla...
  #6 (permalink)  
Antiguo 08/05/2006, 04:44
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Bien sencillo
for K=1 to 300
worksheets(K).select
next K
Ahora tengo duda si es worksheets o worksheet, pero si te da error cambialo y listo
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #7 (permalink)  
Antiguo 08/05/2006, 07:37
 
Fecha de Ingreso: mayo-2006
Mensajes: 4
Antigüedad: 17 años, 11 meses
Puntos: 0
me ayudado todo lo que me has dicho, muchas gracias, pero ahora he cambiado un poco de estrategia, lo he aplicado todo a un metodo dentro del visual basic y luego ejecutarlo para la hoja que quiero.

En la misma hoja del grafico, tengo una celda que hace referencia a la que cambia el dato del grafico, asique cambio el dato y copio el grafico todo con la misma hoja de excel. Tengo hecho esto:

Sub Macro1()

For k = 3 To 340

Cells(24, 2).Value = k
Range("B25").Select
Worksheets("graficos2").Copy After:=Worksheets("graficos2")

Next k

End Sub

Pero me da error 1004 en el metodo copy de la clase worksheet, en la linea marcada con azul, y no se como resolverlo, a ver si alguien puede decirme algo. Muchisimas gracias...
  #8 (permalink)  
Antiguo 25/07/2007, 14:42
 
Fecha de Ingreso: julio-2007
Mensajes: 1
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Macro en excel para copiar graficos

En cuanto a esta formula que colocaste te sugiero lo siguiente....

Resulta que eso que te pasa a ti, me pasó tambien entonces me di cuenta (No se si este en lo correcto o no).

En los macros de excel, no importa que nombre le tengas a la hoja si el programa esta en español. puedes colocar hoja (Codigo suguiente)

Hoja1.Cells(1 + i, 1).Copy Destination:=Hoja2.Cells(1 + i, 1)

Si el programa esta en ingles o español funciona con "Sheet1" sin las comillas...

Que es lo que hace el codigo?


Hoja1.Cells(1, 1).Copy Destination:=Hoja2.Cells(1, 1)

1. Copia la celda 1,1 de la hoja 1 (Independientemente si la hoja se llama juanito o pedro)

2. Envia esa copia a la celda 1,1 de la hoja 2 (Independientemente si la hoja se llama juanito o pedro)

4. Si tienes 50 hojas o más... El macro las identificara de Izq a Der y numerandolas suscecivamente si importar el nombre que tenga... Ejm: Hoja1,Hoja2,Hoja3,...,Hojan.... o Sheet1,Sheet2....
Espero te sirva esta info...

Nota: Tambien se puede hacer con rangos Ejm:Range("A1:A200")....bla bla bla...
  #9 (permalink)  
Antiguo 25/07/2007, 18:18
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Re: Macro en excel para copiar graficos

Hola, perdon por entrometerme, pero si bien tienes razon en lo que comentas kensodkaushi, no es una cosa absoluta.

Supongamos por ejemplo, que mi hoja con la etiqueta mas a la izquierda se llama "Hola". Tal como tu pones, ese seria el objeto "Hoja1", que es el nombre que le da el excel por defecto, pero si vamos al editor de VBA, y en la propiedad (Name) (Ojo, name con parentesis, no sin parentesis) de esa hoja, colocamos "Chao", entonces esto:

Hoja1.Cells(1 + i, 1).Copy Destination:=Hoja2.Cells(1 + i, 1)

se tendria que modificar por estop para que funcione:

Chao.Cells(1 + i, 1).Copy Destination:=Hoja2.Cells(1 + i, 1)

En la etiqueta de la hoja seguira diciendo "Hola", pero en el nombre (Name) del objeto sera "Chao"

Espero se alla entendido

Abraham
  #10 (permalink)  
Antiguo 12/12/2007, 15:36
 
Fecha de Ingreso: diciembre-2007
Mensajes: 3
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Macro en excel para copiar graficos

Hola la solución para eso puede ser muy simple

la funcion correcta sería Sheets("nombre") pero como el problema es cuando se cmabian los nombre con esta función se pueden usar indices es decir Sheets(1) se referiría a la primera hoja de todas sin importar en que diioma este excel, entonces loq ue tendrias que hacer sería nombrar las hojas de atras apra adelante y cuando copies no copiara "after" sino "Before".

No se si llegue a explicarme bien igual espero haber sido de ayuda.

Apovecho tambien para preguntarles, por si acaso saben, ¿Conocen alguna macro par crear gráficas, es decir que con correr la macro se cree automaticamente una grafica con caracteristicas epsecificas y con un rango de datos especificos.

gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:24.