Visual Basic - Borrar todos los graficos del libro al generar el evento terminate de un userform

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Borrar todos los graficos del libro al generar el evento terminate de un userform

Publicado por Ariel (5 intervenciones) el 07/07/2017 17:02:04
Estimados, tengo el siguiente problema, quiero eliminar todos los graficos que se generaron en la planilla al momento de cerrar un userform como podria hacerlo? saludos y gracias.

1
2
3
4
5
6
7
Sub Macro1()
    For j = 1 To ActiveSheet.DrawingObjects.Count
        If Left(ActiveSheet.DrawingObjects(j).Name, 5) = "Chart" Then
            ActiveSheet.DrawingObjects(j).Delete
        End If
    Next j
End Sub
ese no sirve, lo saque de otro foro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Borrar todos los graficos del libro al generar el evento terminate de un userform

Publicado por Andres Leonardo (1798 intervenciones) el 07/07/2017 20:38:57
Esto lo hice hace algun tiempo pero lo saque de otra pagina la cual dejo la refeerncia por que es de ellos sin duda...
claro yo borraba las formas .. pero entiendo que podrias buscar los objects.
como consejo graba una macro nueva y elimina un objeto de los que quieres borrar y mira el codigo solo lo deberias adaptar pero con esto te serviria.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Borrar_Libro_Tipo()
Dim nHoja As Integer
Dim Shape As Excel.Shapes
'Contamos las hojas del libro activo
nHoja = ActiveWorkbook.Worksheets.Count
'Inicimiamos bucle.
For i = 1 To nHoja
'En cada hoja seleccionamos/detectamos todas las formas
For Each Shapes In Sheets(i).Shapes
With Shapes
'Si la forma es entonces la borramos
If .Type = 3 Then
.Delete
End If
End With
Next
Next i
End Sub

Segun MS estas son los codigos de tipos de objetso de forma.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Name	Value	Description
msoAutoShape	1	AutoShape.
msoCallout	2	Callout.
msoCanvas	20	Canvas.
msoChart	3	Chart.
msoComment	4	Comment.
msoContentApp	27	Content Office Add-in
msoDiagram	21	Diagram.
msoEmbeddedOLEObject	7	Embedded OLE object.
msoFormControl	8	Form control.
msoFreeform	5	Freeform.
msoGraphic	28	Graphic
msoGroup	6	Group.
msoIgxGraphic	24	SmartArt graphic
msoInk	22	Ink
msoInkComment	23	Ink comment
msoLine	9	Line
msoLinkedGraphic	29	Linked graphic
msoLinkedOLEObject	10	Linked OLE object
msoLinkedPicture	11	Linked picture
msoMedia	16	Media
msoOLEControlObject	12	OLE control object
msoPicture	13	Picture
msoPlaceholder	14	Placeholder
msoScriptAnchor	18	Script anchor
msoShapeTypeMixed	-2	Mixed shape type
msoTable	19	Table
msoTextBox	17	Text box
msoTextEffect	15	Text effect
msoWebVideo	26	Web video

Ref:
https://excelsignum.com/2016/10/12/eliminar-todas-las-imagenes-formas-de-una-hoja-o-un-libro-en-excel-con-vba/

https://msdn.microsoft.com/VBA/Office-Shared-VBA/articles/msoshapetype-enumeration-office
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Borrar todos los graficos del libro al generar el evento terminate de un userform

Publicado por Ariel (5 intervenciones) el 10/07/2017 15:02:24
Estimado Andres, tu procedimiento funciona perfecto muchas gracias, respecto a lo de grabar las macros y observar el codigo, siempre lo hago, pero esta oportunidad no me resulto util, no siempre funciona, pero tu macro realiza la operacion que necesito perfectamente, el unico problema que aun me surge es el que lo trate de enlazar al evento deactivate de userform y no me funciono, pero al asignarle un comand buttom realiza la operacion, como podria asociar la rutina para que se ejecute al momento de cerrar un formulario? desde ya muchas gracias por tu excelente respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Borrar todos los graficos del libro al generar el evento terminate de un userform

Publicado por Ariel (5 intervenciones) el 10/07/2017 15:07:32
Ya, para solucionar que la rutina se ejecutara al salir solo tube que asignar el evento query close en vez de deactivate en el userform y ahi funciono sin problemas, lo comento por si alguien llegase a tener un problema similar, saludos muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Borrar todos los graficos del libro al generar el evento terminate de un userform

Publicado por Andres Leonardo (1798 intervenciones) el 10/07/2017 15:49:56
Q bueno que te haya funcionado ... esa es la idea de este foro que todos aprendamos

saludos cordiales desde Ecuador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar