Excel: eliminar 1000 cuadros de texto

Tamaño de letra:

Los cuadros de texto en Excel

El otro día, programando con vba y Excel 2007 me ocurrió una cosa muy curiosa: varias celdas de una hoja contenían un montón de Cuadros de Texto. Cuando digo un montón quiero decir cerca de 1000 cuadros de texto. ¿Cómo aparecieron? Pues realmente no lo sé y los descubrí de casualidad ya que cuando pasas sobre ellos el cursor del ratón cambia de forma. Son todos cuadros de texto vacios, uno encima de otro y de pequeño tamaño. Excel 2007, y he buscado concienzudamente por todos los menús, no tiene una forma de saber cuántos cuadros de texto existen en una hoja ni de cómo eliminarlos todos. Veremos una forma muy sencilla de hacerlo.

La manera que indica Microsoft de eliminar cuadros de texto en Excel es de forma individual ir pinchando en un extremo del cuadro y pulsar la tecla Supr. Esto para un cuadro de texto o para diez es una forma razonable de hacerlo, pero para ¡eliminar 1000! no lo es...además que tampoco sabemos su localización exacta. Vamos a usar un poco las matemáticas y me voy a marcar un reto. Voy a imaginar (optimistamente) que soy capaz de eliminar un cuadro de texto en cinco segundos. Entonces:

  • Con 1000 cuadros de texto tardaré 5000 segundos ? 1hora 23 minutos aproximadamente.

El reto que me voy a plantear es hacerlo de otro modo usando programación y macros en la mitad de ese tiempo. Para esto tengo que hacer algo sencillo.

Formas - Shape

Excel, como sabrás, dispone de una gran cantidad de lo que denomina formas. Puedes crear desde formas básicas (círculos, retángulos etc...) hasta combinaciones elaboradas para la creación de formas complejas. Dentro de estas formas se encuentran nuestros cuadros de texto. Generalmente, los cuadros de texto se añaden desde la pestaña Insertar -> Cuadros de texto. Cuando creas un cuadro de texto y lo seleccionas, puedes ver su nombre en el cuadro de nombres, en mi caso uno de los nombres es 854 CuadroTexto por eso dije al principio que tenía cerca de 1000 cuadros de texto.

Si traducimos al inglés la palabra formas encontraremos la palabra clave que necesitamos para programar: Shape

Creando la macro

Preparando las variables

No hay tiempo que perder y tiene que ser algo sencillo. Voy a crear una macro vacia: pestaña programador -> Grabar macro, le pongo de nombre Listar_formas y pulso aceptar. Finalmente detener grabación. Para acceder rápidamente a su código me voy a Ver macros (Alt+F8), selecciono la que acabo de crear y pulso modificar. Ya tengo el inicio del código:

 
Sub Listar_formas()
 
End Sub
 

Voy a trabajar con la hoja activa:

 
ActiveSheet
 

Voy a escribir en las celdas de la columna A el nombre de todas las formas existentes. Usaré una variable ? contador:

 
ActiveSheet.Range("A" & contador).Value
 

Voy a definir el objeto Shape (forma):

 
Dim forma As Shape
 

Macro para listar todas las formas

Y voy a buscar todas las formas existentes. El código final para listar todas las formas es el siguiente:

 
Sub Listar_formas()
 
    Dim forma As Shape
    Dim contador As Integer
 
    contador = 0
    For Each forma In ActiveSheet.Shapes
        contador = contador + 1
        ActiveSheet.Range("A" & contador).Value = forma.Name & " - " & forma.Type
    Next forma
 
End Sub
 

Macro para eliminar cuadros de texto

Pues ya está todo. Cierro de nuevo el archivo Excel sin guardar nada, lo abro, creo una macro y añado el siguiente código:

 
Sub Eliminar_formas()
 
    Dim forma As Shape
    Dim contador As Integer
 
    contador = 0
    For Each forma In ActiveSheet.Shapes
        If forma.Type = msoTextBox Then
            contador = contador + 1
            forma.Delete
        End If
    Next forma
    MsgBox "Se han eliminado: " & contador & " cuadros de texto"
 
End Sub
 

La ejecuto, hace su trabajo perfectamente en milésimas de segundo, no se deja ninguno y no he llegado a tardar ni la tercera parte de tiempo que haciéndolo a mano como pensé en un primer momento:

Excel eliminar cuadros de texto

Eliminar en todas las hojas

El usuario ignacio, nos dejó el siguiente comentario:

El código está fenomenal, aunque tengo una duda. ¿cómo se puede hacer para que lo haga en todas las pestañas del libro?

Voy a intentar solucionar su duda, para esto y basándome en lo que acabamos de ver, creo la siguiente macro:

 
Sub Eliminar_formas()
 
    Dim forma As Shape
    Dim contador As Long
    Dim hoja As Worksheet
 
    contador = 0
    For Each hoja In Worksheets 
        For Each forma In hoja.Shapes
            If forma.Type = msoTextBox Then
                contador = contador + 1
                forma.Delete
            End If
        Next forma
    Next hoja
 
    MsgBox "Se han eliminado: " & contador & " cuadros de texto"
 
End Sub
 

Como puedes observar, en este último código he puesto la variable contador como Long. ¿Por qué? pues porque el usuario Damian nos dejó un mensaje en el que decía que el código le había generado un ¡desbordamiento! Una variable definida como Integer, si observas la ayuda de Excel, verás que se almacena como número de 16 bits (2 bytes) con valores que van de -32.768 a 32.767. Esto significa que posiblemente el usuario Damian tenía en su archivo Excel ¡más de 32767 cuadros de texto! ¡impresionante! Le tendría que ir lentísimo.

Última actualización: Viernes, 19 Abril 2013
Comentarios
+1 # APV27 07-05-2021 20:30
Si esto no es un récord es un buen average...... Bueno, no puedo subir el Print Screen que muestra la cantidad de cuadros eliminados en todo el libro que estoy trabajando ahora. Me ha eliminado 210412 cuadros de texto. El fichero anteriormente pesaba mas de 37 MB, ahora pesa poco más de 2 MB. Excelente aporte.
0 # Editor 07-05-2021 21:10
Gracias a ti por comentar.
0 # DanielR 09-12-2021 15:59
Trate de usar el paso a paso pero no me resulta, no entiendo lo de la hoja activa si puediera explicarlo un poco seria de gran ayuda. Estos documentos que utilizo estan plagados de estos cuadritos y hasta me suministraron mas Ram pensando que era la falla y no sirve.
gracias
0 # Daniel 20-08-2020 00:19
Eliminé 268064 cuadros de texto.... INCREÍBLE! Muchas Gracias!
+2 # David Ivan 28-05-2020 06:18
Excelente, muuuuuuuyyyyyyy bueno, me elimino 45,000 cuadros, un archivo importante para mi, que me lo salvaste, ya lo iba a eliminar y volver hacerlo, me ahorraste semanas de trabajo
0 # Editor 28-05-2020 10:22
Me alegro David, un saludo.
+1 # Luis 08-04-2020 21:22
Muchas gracias por tu ayuda. Tenía más de 270,000 cuadros de texto en mi excel y aunque se demoró como 4 horas en borrarlos todos, el excel quedó súper bien luego de aplicar la macro que diseñaste! Eres un crack
0 # Editor 08-04-2020 21:40
Muchas gracias a ti por comentar, un saludo.
0 # Ismael 15-02-2020 13:39
Muchas gracias por el código. Aunque en un inicio no me funcionó el eliminar_formas , así que corrí el listar_formas y me enumeró 32767 autoshapes 1-1 luego de dar el error de desbordamiento. No me manejo en código VBA, desconozco que significa un autoshape, pero asumí que al no funcionar el código de eliminar_formas , este no sería un cuadro de texto, así que intenté nuevamente eliminando el If forma.Type = msoTextBox Then y después de un muy largo tiempo de espera terminó eliminando más de 112.000 formas.
Mi duda es cómo es que se llegan a insertar tal numero de formas en el documento.
0 # Editor 15-02-2020 14:04
Pues es una pregunta que yo también siempre me he hecho. No lo sé, puede ser que al copiar y pegar celdas se copien las formas pero no idea.
Gracias por tu comentario.
Un saludo.
+12 # JORGE 11-03-2020 13:57
LA SOLUCIÓN ES MUCHÍSIMO MAS FÁCIL
HACER CTRL + I ( IR )
ESPECIAL
BUSCAR OBJETOS
DELETE Y LOS BORRA A TODOS
0 # rf 18-09-2020 01:31
Muy buena opción
0 # Jose Bocelli 06-08-2021 04:44
ESPECTACULAR!!! Solucionado
0 # Miriam 07-02-2023 18:53
Muchisisisimas gracias!!!
+1 # toni 29-11-2023 17:41
perfecto crack, me has ahorrado 7 días de trabajo, gracias.
0 # Rocksy 30-01-2020 07:49
Muchas gracias!!! Acabo de eliminar mas de 16 mil cuadros de texto!... 16 mil gracias!!!
+1 # salvador 17-01-2020 11:41
Cito a VICTOR CRUZ:
lo más fácil es: poner el puntero sobre el circulo en la esquina de cualquier cuadro de texto y obturar control + shift + espaciador. aparecerán todos los cuadros de texto y los podrás quitar con el botón suprimir. tener en cuanta des-seleccionar las imágenes y cuadros de texto que no quieras borrar. cualquier pregunta con gusto a mi correo.


La macro no funcionó, aunque creo que ha sido porque lo que tenía era una 'forma' no un 'cuadro de texto'. Antes de cambiar la macro propbé esta otra solución y fué perfecta. Gracias a todos.
0 # Editor 17-01-2020 11:46
Gracias Salvador por comentarlo.
Un saludo
0 # DanielR 09-12-2021 17:53
ESTE CONSEJO ME SIRVIO 100%, ME AHORRO MUCHOOOOO.
GRACIAS
-1 # Francisco 17-10-2019 15:03
Alquien sabe por qué se generan esos cuadros de texto? Que es lo que los genera? Se trata de un virus o algo propio del Excel?
0 # Edu 17-10-2019 19:16
No. No creo que sea un virus. Tal vez sea un problema de Excel, es posible que se copien los cuadros de texto y se peguen. ¿De qué forma? Pues no lo sé, tal vez al arrastrar involuntariamen te cuadros o mediante algún código de macros...
0 # Sergio 08-09-2019 06:40
Elimine más de 700 cuadros de texto con tu macro, muy agradecido, ya me volvía loco!!
+1 # danielserratto 12-06-2019 10:01
Hola 2019,
Tenia exactamente el mismo problema, pero esta solucion y otras que hay en la red no me funcionaban ya que el excel dejaba de responder porque tenia ya una cantidad ridicula de cuadros de texto, entonces Excel no daba abasto para cumplir con la solución y por lo tanto dejaba de funcionar. Pero finalmente encontré en otro foro esta solución y vaya que es super rapida y eficaz. Espero les sirva.
"I had an excel workbook with 5 tabs and on each tab 30000 textboxes or so...
I renamed the xlsx to zip, then removed the drawings xml files.
renamed back to xlsx, open, then excel will tell you that there is something wrong with the file. Press repair and then all the textboxes are gone."
0 # karmany 12-06-2019 22:32
Muchas gracias por la aportación, habrá que probarla!!!!
0 # GGEE 12-03-2020 14:45
Me resultó a la perfección, una genialidad esta opción.
Muchas gracias
0 # JASON GOMEZ 06-02-2019 23:01
hola quiero eliminar cuadros de texto pero lo quiero aser sin eliminar el texto ya probe de barias formas pero es inutil alguien puede ayudarme ya que todo mi texto esta en cuadro de texto
0 # Editor 11-02-2019 09:29
¿Cómo sin eliminar el texto? ¿A qué te refieres exactamente? Y si no quieres eliminar el texto, ¿qué quieres hacer con él? ¿dónde lo quieres copiar-pegar?
0 # JASON GOMEZ 06-02-2019 22:59
hola quiero wliminar los cuadros de texto de mi excel pero los quiero eliminar sin eliminar el texto alguien me puede ayudar tengo 5 hojas de excel asi todo el texto esta en cuadros de texto. gracias
0 # Fabricio 14-05-2018 18:39
hola
se requiere una macro para tomar los datos de los cuadros de texto encontrados en una hoja com lo hago?, gracias
0 # Editor 14-05-2018 22:13
Hola.
Usa el código Sub Eliminar formas (macro para eliminar cuadros de texto) y en vez de eliminar los cuadros de texto (forma.Delete) escribe forma pon un punto detrás (forma.) y te saldrán todas las opciones existentes. Ahí podrás modificar los cuadros de texto
0 # DANIEL 08-05-2018 18:56
Es lo mejor que he podido encontrar en Internet excelente ayuda
+2 # AlejandroCB 26-03-2018 17:06
VENGO DEL 2018 Y QUIERO DECIRLES QUE ESTA MACRO ES UNA MARAVILLA , ME ELIMINO 59877 CUADROS DE TEXTO Y MI EXCEL PASO DE PESAR 4.75 MB A 175 KB . SOLO ME QUEDA DAR UN MILLÓN DE GRACIAS AL CREADOR.
0 # JOSE RAMON 12-03-2018 19:12
para eliminar los cuadros de texto debo ejecutar las dos macros que señalas o en que orden van. gracias por tu ayuda
0 # karmany 15-03-2018 00:03
No. La macro que se llama listar_formas solo vale para que te haga una lista de todos los cuadros de texto que existen en tu hoja.

Solo tienes que ejecutar la última macro de todas, la que pone Eliminar_formas pero la que está al final del artículo, en el título: "Eliminar en todas las hojas."
0 # Pablo 23-02-2018 20:39
Que truco más bueno!!...Me has salvado de una buena!!...me pongo esta página en favoritos!
A base de copiar celdas arrastrando hacia abajo iba copiando cada vez más cuadros de texto desde la primera celda que sólo tenía uno....pero a base de ir arrastrando al final tenía unos 3.000 y pico....ahora va la hoja mucho más fluída!!....... Gracias!...Buen finde!!
0 # Bill Gates 19-01-2018 12:22
Muchas gracias, acabo de eliminar 298364 autoshapes gracias a tu script.

Iba un poco lento. :lol:
0 # Constanza 02-10-2017 18:36
Genial!
Me salvaste. Me había pasado antes y ya no recordaba la macro. Tenía 9356 cuadros!!
Mil gracias!
+1 # Marcos 14-08-2017 17:13
Gracias por tu aporte. Yo tenia una hoja con 20,894 cuadros de texto y no tenía idea que la lentitud era por eso. Me sirvió muchísimo. Saludos desde Peru.
0 # agente902 31-07-2017 15:21
Si no progrAMO COMO PUEDO QUITAR ' NO SÉ QUE ES ESO DEL CÓDIGO
0 # Aitor 31-07-2017 16:42
El código es simplemente una macro. Es muy sencilla de usar y en el artículo está explicado paso a paso. inténtalo y sigue los pasos. ¿Dónde te has quedado?
0 # CHARLES SOTO 11-02-2017 14:55
NO PUEDO ELIMINAR DE MI HOJA DE EXEL IMAGENES DE ESCUDOS COMO HAGO PARA ELIMINARLOS, LOS ELIMINO PERO ME SIGUEN APARECIENDO LAS IMGANES Y CUADROS DE TEXTO VACIOS PERO MAS SON LA IMAGENES, POR FAVOR SI ME PUEDES AYUDAR
0 # J. luis 11-02-2017 17:52
Primero haz una copia de seguridad del archivo.
Según tu comentario parece que tienes muchas imágenes.

Para eliminarlas puedes sustituir en el código esto:
Código:If forma.Type = msoTextBox Then

Por esto:
Código:If forma.Type = msoPicture Then

Pero recuerda: con este código borrarás TODAS las imágenes de la hoja de excel y no solo las de las banderas.
No sé si es lo que quieres. Después puedes volver al código original y borrar los cuadros de texto.
0 # CHARLES SOTO 13-02-2017 16:19
Gracias exelente si me funciono ya no hay las imagenes ni los cuadros de texto :lol: :lol: :-) :-) :-)
0 # agente902 31-07-2017 15:25
Hola, estoy intentando eliminar los cuadros de texto pero yo no programo y no entiendo eso del código, no hay otra forma? que no sea ir uno a uno claro! gracias
0 # GOMSAJE 02-02-2017 22:39
La primera parte al identificar los cuadros de texto cambio Integer por Long, y me identifica poco mas de 107200 cuadros, pero al ejecutar la eliminacion tarda como 10 minutos y al final me dice "Se han eliminado: 0 cuadros de texto".
checo mi hoja y ahi estan los dichosos cuadros, ¡que puedo hacer?
mi archivo esta muy lento.
Gracias por su apoyo
+2 # karmany 03-02-2017 15:24
Prueba una cosa. Intenta eliminar los cuadros de poco en poco a ver si te lo permite. Para eso, en el código de solo una hoja (no de todas las hojas) borra por ejemplo los 5000 primeros cuadros de texto y después vuelve a ejecutar la macro.

Puedes modificar el código y el bucle dejarlo así:
Código:
For Each forma In ActiveSheet.Shapes
If forma.Type = msoTextBox Then
contador = contador + 1
forma.Delete
If contador = 5000 then Exit For
End If
Next forma
+1 # GOMSAJE 04-02-2017 05:44
Ya me funciono, con este ultimo codigo al fin logramos eliminar todos esos molestos cuadros de dialogo, gracias por su apoyo.
+2 # Eli 26-01-2017 14:48
A proposito vengo de 2017 a decirles que el codigo sigue funcionando a las mil maravillas, solo es cuestion de paciencia ya que demora en identificar los cuadros y mas si tienen como nuestro amigo Daniel 328963 (Record mundial) :P .
0 # karmany 26-01-2017 23:35
Gracias por comentarlo, seguro que es de ayuda a otros usuarios.
Un saludo Eli.
0 # GOMSAJE 02-02-2017 20:23
La primera parte al identificar los cuadros de texto cambio Integer por Long, y me identifica poco mas de 107200 cuadros, pero al ejecutar la eliminacion tarda como 10 minutos y al final me dice "Se han eliminado: 0 cuadros de texto".
checo mi hoja y ahi estan los dichosos cuadros, ¡que puedo hacer?
mi archivo esta muy lento.
Gracias por su apoyo
0 # Editor 02-02-2017 21:20
¿Has utilizado el último código para eliminar todos los cuadros de texto de todas las hojas?
Madre mía, 107200 cuadros de texto...
Pienso que igual tienes muchos cuadros de texto por hoja.
Intenta usar el código "Eliminar formas" para una sola hoja y no el último para todas. A ver si tienes suerte.
0 # GOMSAJE 03-02-2017 00:01
Ya use el codigo para una sola hoja, y se tarda como 10 minutos y al final sigue diciendo "Se han eliminado: 0 cuadros de texto".
y ahi siguen, ¡alguna opcion?
Gracias por responder.
+1 # Eli 26-01-2017 14:40
Agradezco mucho tu esfuerzo y por compartir tu codigo ya que nos diste la facilidad a todos los que teniamos ese terrible problema de solucionarlo. Mil y mil gracias!!!
:D :D :D :D
+4 # VICTOR CRUZ 16-09-2016 04:46
lo más fácil es: poner el puntero sobre el circulo en la esquina de cualquier cuadro de texto y obturar control + shift + espaciador. aparecerán todos los cuadros de texto y los podrás quitar con el botón suprimir. tener en cuanta des-seleccionar las imágenes y cuadros de texto que no quieras borrar. cualquier pregunta con gusto a mi correo.
+1 # JUDITH 03-10-2016 17:13
Cito a VICTOR CRUZ:
lo más fácil es: poner el puntero sobre el circulo en la esquina de cualquier cuadro de texto y obturar control + shift + espaciador. aparecerán todos los cuadros de texto y los podrás quitar con el botón suprimir. tener en cuanta des-seleccionar las imágenes y cuadros de texto que no quieras borrar. cualquier pregunta con gusto a mi correo.
oh PERFECTO!!!!Gra cias!!! No tenia idea de como eliminarlas
0 # Lázaro 28-06-2016 20:34
no se de macros he intentado quitarle los cuadros de texto oculto y no me da, ya seguí las instrucciones proporcionadas, podría alguien ayudarme, a parte al tratar de ejecutar el macro eliminar forma me dice error de compilación la referencia de variable de control Next no válida
0 # Editor 28-06-2016 23:53
Haz lo que se comenta al principio siguiendo los pasos que pone en "Creando la macro, Preparando las variables" y en la macro que se crea, pega el último código de este artículo (apartado Eliminar en todas las hojas). Simplemente ejecuta después la macro. Qué error extraño te sale, si mandas una captura, tal vez pueda ver dónde te has equivocado
0 # mariano Montenegro 28-06-2016 01:34
gracias a sus soluciones elimine 14260 cuadros de texto, Muchas gracias!!!
0 # Omar 26-06-2016 21:27
gracias yo tenia 9850 cuadros
0 # Sergio 23-06-2016 01:35
Excelente....Fe licidades...
0 # Gerardo 16-06-2016 21:52
Wow , me funciono muy bien ,mis respetos para ti, gracias por comparir
0 # Li 18-05-2016 12:37
Excelente!!!!

Muchisimas gracias, estaba ya desesperada...
0 # Francisco 16-05-2016 10:21
amigo, gran aporte me sirvio muchisimo, tenia un archivo de 17 Mb y ahora pesa solo 103 kb
+1 # MAURICIO 27-01-2016 20:11
Muchas gracias por el código elimine como 20000 cuadros de texto, increíble trabajo. gracias por compartir.
0 # Jahaziel D. 30-11-2015 05:43
Hey! Me sirvió mucho, eres un genio, gracias.
Saludos!
0 # Edwin 14-10-2015 18:14
excelente estos son aportes.....gar cias
0 # NICOLAS 07-08-2015 15:33
grande papa!!
lo probe en office 2010 y anduvo barbaro.
no se nada de macros ni de programacion, pero nada y lo pude hacer!
genial! gracias!!!
0 # Nahuel 04-08-2015 18:23
Hola gente, miren yo los borro manualmente, zoomeo hacia afuera y uso la flecha de seleccion de dibujo y agarro de a grandes porciones de la hoja y entonces selecciono todas las figuras (no tengo otras que estos cuadros de texto vacios) y despues las borro como si fueran una, con suprimir..
La gran incognita es DE DONDE SALEN? alguien tiene esa informacion?
0 # RAUL 14-07-2015 23:19
MI PROBLEMA ES QUE INSERTE UN CUADRO DE TEXTO EN UNA MACRO Y AL SELECCIONARLO ME APARECE LA LEYENDA LA REFERENCIA NO ES VALIDA Y NO LO PUEDO BORRAR, ADICIONAL NO ME DEJA TRABAJAR LOS DEMAS LIBROS DE EXCEL QUE TENGO ABIERTOS.....GR ACIAS
0 # Editor 15-07-2015 00:29
¿Un cuadro de texto en una macro? No sé a qué te refieres.
Si te aparece la leyenda "la referencia no es válida" verifica qué tipo de control has creado o haces referencia.
El único Excel que no he probado con este código es la versión 2003. Si usas esta versión prueba a cambiar esto:
Código:...
If forma.Type = msoTextBox And forma.TextEffect.Text = "" Then
...

por
Código:...
If forma.Type = msoTextBox And forma.TextFrame.Characters.Text = "" Then
...
+1 # Ruben 23-04-2015 21:08
Muchas gracias por el código!!! Eliminamos más de 100.000 cuadros de texto que estaban haciendo que ciertas planillas de excel funcionen muy lentamente.

Saludos!!!
0 # luis 22-12-2014 17:41
Hola, Mil gracias por el Aporte. solo me queda una duda. y si solo requiero eliminar cuadros de texto vacios y no lo que contengan informacion? intente añadir esta validacion al codigo: If IsNull(msoTextB ox) Then
forma.Delete
End If , pero aun asi me sigue borrando todos los cuadros de texto sin importar que esten llenos o vacios. Espero me puedas ayudar.
Saludos.
+2 # karmany 23-12-2014 01:43
Seguramente no te funciona porque el valor "" no es nulo. Mira si ejecutas este código:
Código:Dim Valor As Boolean
Valor = IsNull("")


Verás que Valor te devuelve False. En vez de usar esa condición, utiliza esta:
Código:If forma.TextEffect.Text = "" Then...

Un saludo.
0 # luis 23-12-2014 20:30
Hola www.subeimagenes.com/img/sin-titulo-1184863.png
Hola, antes que nada gracias por responder :D . En efecto no es un valor nulo, sin embargo al agregar la validación que proporcionas me arroja un error (el cual anexo en la Url de abajo) diciendo que no se admite esa propiedad o método. que puede causar esto?
Saludos y gracias por tu tiempo.
0 # karmany 24-12-2014 07:57
El código déjalo mejor así:
Código:
...
If forma.Type = msoTextBox And forma.TextEffect.Text = "" Then
contador = contador + 1
forma.Delete
End If
...

Si en el código escribes forma.T
¿No sale TextEffect?
Y si escribes forma.TextEffect.T
¿No sale Text?
Esto tal vez sea posible porque estés usando una versión de Excel 2007 desactualizada. ¿Tienes los Service Pack instalados? ¿Qué versión de Excel estás usando?
0 # luis 29-12-2014 21:47
www.subeimagenes.com/img/sin-titulo2-1189502.png
Hola de nuevo!, he modificado el codico a como me indicaste y ahora me arroja un error dirente: "el valor especificado se encuentra fuera de los limites" (añado imagen). Respecto a la versión de excel que estoy utilizando es la 2013 de 64bits actualizado y si, cuando escribo forma. me sale la opción "TextEffect" y posteriormente la de "Text".
Un Saludo y Muchas Gracias! :lol:
0 # karmany 29-12-2014 22:48
Es extraño. He probado el código en Excel 2007, 2010 y 2013 y funciona bien pero no he podido ejecutarlo en Excel 2003 porque no se dónde encontrarlo.

Desbordar la variable long (contador) es prácticamente imposible.

Tienes que depurar el código y ver en qué línea está el error.
De todos modos, para Excel 2003, podrías probar lo siguiente. Sustituye esto:
Código:
...
If forma.Type = msoTextBox And forma.TextEffect.Text = "" Then
...

Por esto otro:
Código:
...
If forma.Type = msoTextBox And forma.TextFrame.Characters.Text = "" Then
...

¡Suerte!
0 # Hector 19-12-2014 01:11
Buenisimo el aporte, me estaba poniendo lenta la maquina.
0 # zamo 19-12-2014 00:12
holaprimero gracias por el codigo pero tengo una pregunta saben como hacerlo pero sin que elimine los cuadros de texto que estan con caracteres (informacion en los cuadros) ya que esos si los ocupo gracias
0 # Rubén 19-12-2014 11:58
Tendrás que poner una condición antes de eliminar el cuadro de texto.
0 # zamo 19-12-2014 16:32
lo intentare a ver si no hago mas desastre jajaja gracias
0 # zamo 19-12-2014 19:19
por mas que lo intento no puedo alguien sabe como hacerlo se los agradeceria mucho
0 # karmany 19-12-2014 23:51
Dame más detalles, ¿qué significa que los cuadros de texto estan con caracteres (información en los cuadros)? ¿que hay algo escrito en ellos?
0 # DANIEL VALLES 27-11-2014 21:58
CHEVERE LA PRIMERA VEZ AHORA LOS CUADROS SE ESCONDEN EN LA COLUMNA A EDN SU LADO IZQUIERDO Y CUANDO CORRO LA MACRO NO LOS ELIMINA, SE PODRIA DECIR QUE MUTARON ALGUNA SOLUCION
0 # daniel 01-09-2014 19:42
lo maximo me salieron a mi no se como 328963 cuadros de texto muchas gracias
0 # karmany 04-09-2014 00:21
¡Qué barbaridad! Seguro que iría bien lento
0 # Armando López 11-07-2014 00:07
Muchas gracias me sirvio para orientarme en un problema similar pero con AutoShape
0 # karmany 11-07-2014 15:57
Muchas gracias por tu comentario, es bueno saber que te ha sido útil con AutoShape. :-)
0 # jfloresmtz 26-05-2014 23:10
alguien ya encontro como borrar los rectangulos?
0 # ARturo 26-05-2014 23:15
Mira lo que se comenta más abajo:

Si es un rectángulo lo que quieres borrar, debes modificar en el código la línea:

Código:If forma.Type = msoTextBox Then


y cambiar la palabra msoTextBox por otro tipo de forma. Todas las formas de Excel las tienes en este enlace.
msdn.microsoft.com/en-us/library/aa432678(v=office.12).aspx

No sé ahora cuál corresponde a un rectángulo, prueba msoAutoShape como primera opción a ver...
+1 # arturo 26-05-2014 18:43
Eres una santa o santo, eso no importa porque todos se van al cielo
0 # Aitor 26-05-2014 22:29
_
|)`
| |
| |_____
/ (]__)
/ (]___)
/ (]___)
___(]_)
/
+2 # tylu 16-05-2014 19:27
Gracias!!!!!!!! !!!!!!!!
0 # karmany 16-05-2014 20:57
¡Saludos! ;-)
+2 # Wiston Silva 14-05-2014 04:06
Muchisimas gracias amigo, me sirvio mucho!!
+1 # Ramon 25-03-2014 19:01
Hola, sigo los pasos que explicais y me sale que se eliminan 0 cuadros de texto, que puedo hacer mal? Gracias
+1 # Ramon 25-03-2014 18:23
Hola, sigo las instruciones tal y como indicais y siempre me sale que elimino 0 cuadros de Texto, escepto si el 0 pongo un numero y luego me borra el numero que he puesto pero en el excel no hay ningun cambio....sigo con 5225 cuadros de Texto, que mas podria hacer gracias.
0 # Aitor 25-03-2014 20:04
¿Qué versión de Excel usas? ¿Cómo sabes que tienes 5225 cuadros de texto?
+1 # Ramon 01-04-2014 08:52
2007, y me lo pone los cuadros que tengo cuando quiero eliminarlos uno a uno
+1 # Aitor 01-04-2014 14:26
¿Has mirado si te deja listalos? Fíjate en el código anterior.
Es muy extraño lo que comentas porque yo lo acabo de probar en Excel 2007 y Excel 2013 y funciona perfecto.
¿Has puesto bien el código?
0 # Ramon 01-04-2014 15:35
Ya tambien me lo dijo un informatico que conozco que era raro, pero lamacro la copio igual, y cuando la ejecuto me sale "se han eliminado 0 cuadros de texto". Supongo que algo estoy haciendo mal, pero la verdad no veo que puede ser. Pero gracias Aitor por tu interes, estoy agradecido. Si se te ocurre algo me lo comentas.
0 # Ramon 01-04-2014 16:48
Hola Aitor acabo de ver que pone rectangulo, no cuadro de texto, tengo que hacer una macro diferente??????
0 # Aitor 01-04-2014 18:21
Claro. Los cuadros de textos son formas diferentes de los rectángulos.
Quieres decir que ¿Tienes 5000 rectángulos?
Eso sí que es raro. Pero... ¿lo que quieres hacer es borrar rectángulos? Voy a echar un vistazo al código...
0 # karmany 01-04-2014 18:33
Mira, si es un rectángulo lo que quieres borrar, debes modificar en el código la línea:
Código:If forma.Type = msoTextBox Then

y cambiar la palabra msoTextBox por otro tipo de forma. Todas las formas de Excel las tienes en este enlace.
msdn.microsoft.com/en-us/library/aa432678(v=office.12).aspx

No sé ahora cuál corresponde a un rectángulo, prueba msoAutoShape como primera opción a ver...
Suerte y gracias por tus comentarios.
+3 # Ramon 02-04-2014 11:41
Ahora diria que si que me los ha eliminado. SOIS UNOS CRACKS!!!!!! Muchas gracias. si veo que tengo algun otro problema no dudare en contactar con vosotros, gracias. estoy muy agradecido.
+1 # Aitor 02-04-2014 12:50
Un saludo y que tengas buen día!!
0 # Ramon 02-04-2014 13:14
Se me han eliminado 2926 rectangulos pero aun tengo los cuadros de texto, lo miro con lo que me has pasado, gracias
0 # Loli 25-02-2014 20:41
Nosotros tenemos ofice 2007 y me apareció en un archivo que manejamos en a oficinal. No entiendo por qué apareció y han desaparecido casi 600 cuadros. Gracias
0 # Ivel 17-02-2014 16:26
No me deja copiar todo el codigo, no se nada de esto pero en Listar formas lo pude hacer, eso creo, pero en eliminar formas no me deja copiar todo el codigo
0 # karmany 17-02-2014 16:33
Intenta empezar desde cero y copia solo el código que está después de: Eliminar en todas las hojas. (al final del artículo).
Sub Eliminar_formas()
...
End Sub
0 # Maria 20-01-2014 19:21
Por favor podrias hacer un tutorial el youtube sobre esto he seguido todo los pasos y al final me dice se han eliminado 0 cuadros de texto y el archivo tiene miles de cuadros... no se que estoy haciendo mal por favor su ayuda
0 # Emilio 20-01-2014 19:59
¿Dónde tienes el problema? ¿Qué haces mal? ¿Sabes crear la macro?
+3 # Nano 28-11-2013 00:41
Magnifico dato, me solucionó todo el problema. Hasta reinstalé el office pero nada resultaba, hasta que encontré esta página. Llegué a pensar que mi máquina ya estaba obsoleta. Gracias por estar aquí! éxitos. Muy agradecido.
0 # stalin 21-11-2013 23:38
Q tal yo quiero algo parecido, pero quiero q los cuadros de texto queden seleccionados para aplicarles la propiedad Imprimir objeto. Lo intenté con Ctrl+A pero me selecciona todos los objetos y solo quiero q seleccione los cuadros de texto. Me imagino q es un cambio minusculo en el codigo pero desconozco absolut VB, gracias!
-1 # Editor 22-11-2013 18:00
¿Seleccionar todos los cuadros de texto en vez de eliminarlos?
+3 # John Fredy 19-09-2013 23:02
Muy buen aporte. Logre eliminar 127.877 cuadros de texto y se redujo el archivo de 1551 kb a solamente 380 kb. Muchas gracias!
0 # karmany 19-09-2013 23:18
Muchas gracias a ti por comentar. Buen día!!
+1 # Kambei 11-07-2013 20:36
Gracias por el aporte excelente
+3 # Jeovanny 06-07-2013 14:43
Gracias, aqui en mi trabajo, tambien iba muy lento, en una sola hoja tenia 8000 Cuadros. ahora una consulta, sabes el motivo del porque sucede esto?
0 # Editor 06-07-2013 15:38
No sé por qué aparece. Lo estuve analizando pero no encontré respuesta. Creo que es un problema de Excel, tal vez cuando creas un nuevo cuadro de texto este se va duplicando debido a que al seleccionar celdas y copiarlas también se copia el cuadro de texto.

Es posible que vosotros tengáis algún código VBA que copie y pegue celdas. Pero ya has visto que tiene solución.

Gracias por tu comentario. Buen día.
+5 # Esnaya 18-05-2013 21:29
Muchísimas gracias! Hasta ahora los borraba a mano desplazándome con el tabulador, pero no se como han aparecido 5.000 cuadros de repente...
Un saludo
0 # karmany 18-05-2013 21:42
Muchísimas gracias a ti por dejarnos tu comentario.
+2 # Damian 18-04-2013 17:53
Hola Karmany, la verdad una barbaridad tu codigo. Funciona bien por hoja pero todo el libro no me lo toma, me tira desbordamiento. De todas maneras estoy mas que agradecido por este gran pero gran aporte. Mis saludos, agradecimentos y generosidad para ti.
+4 # karmany 18-04-2013 19:21
¿Desbordamiento ? Ostras!! Lo único que se me ocurre que tengas más de 32767 cuadros de texto. ¿por qué? porque el contador se hace con un valor entero, es decir un Integer y el valor máximo que puede manejar es 32.767.

Haz lo siguiente y me cuentas: cambia en el código esto:
Código:Dim contador As Integer
por esto:
Código:Dim contador As Long

Esto ya ha sido corregido en el artículo. Gracias Damian.
-2 # Elena 01-02-2013 11:12
Muchas muchas gracias!!!
0 # karmany 01-02-2013 15:01
Muchas gracias a ti por dejarnos tu opinión. Un saludo
+3 # Carlos 15-01-2013 23:55
karmany, eres un crack!! muchísimas gracias, tantas como los miles de cuadros que he podido al fin borrar de todos mis archivos excel... un saludo
+2 # karmany 15-01-2013 23:57
Te iría bien lento ¿verdad? jeje muchísimas gracias a ti por comentar, te lo agradezco.
Un saludo :lol:
+2 # Andrés 10-01-2013 22:13
Flaco sos un capo, te merecés parte de los $$$ que acabo de cobrar.
Saludos!
0 # karmany 10-01-2013 22:57
Gracias a ti por comentar. Un saludo. ;-)
+1 # Guillermo A. 26-09-2012 18:28
Muchas gracias, 9000 cuadros eliminados, ahora el archivo vuela jaja
+1 # ignacio 05-09-2012 17:01
El código está fenomenal, aunque tengo una duda. ¿cómo se puede hacer para que lo haga en todas las pestañas del libro?
Gracias
0 # karmany 05-09-2012 22:29
Lee otra vez el artículo, a ver si se ha solucionado tu duda...
Un saludo
0 # Diego Forero 30-07-2014 21:05
y esto porque sucede!!! porque aparecen esos cuadros de la nada???
0 # Aitor 31-07-2014 16:05
Pues realmente no lo sé, tal vez algún problema en el mismo Excel. En mi caso, este fallo ya no me da en Excel 2013, tal vez ya se ha solucionado.
+3 # Mark_ 30-08-2012 03:36
Buen aporte, con este código VBA le salve la vida a un cliente, ahora soy su heroe, gracias...
0 # Admin invitado 30-08-2012 09:30
Muchas gracias a ti por tu comentario.
Ciertamente una cosa que sigo sin entender es por qué con el tiempo y uso aparecen tantos cuadros de texto de forma involuntaria.
Un saludo.
+1 # Abel 25-08-2012 00:21
Muy buen aporte, me ayudo con un problema similar de un cliente que su PC consumia mucha memoria, bore mas de 36,000 cuadros de Texto en una sola hoja de excel !! en cuanto abria el libro su PC se moria, Saludos y Gracias!!
0 # karmany 25-08-2012 10:00
Muchas gracias por tu comentario. En mi caso recuerdo que el código VBA iba lentísimo y el fichero excel tardaba mucho tiempo en iniciarse.
Un saludo

Ha pasado mucho tiempo desde que se publicó este artículo. Debido a esto, se han cerrado los comentarios para esta entrada.


 
Visitas: 8496018