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.
Responder | Responder con una citación | Citar
0 # Editor 07-05-2021 21:10
Gracias a ti por comentar.
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
0 # Daniel 20-08-2020 00:19
Eliminé 268064 cuadros de texto.... INCREÍBLE! Muchas Gracias!
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
0 # Editor 28-05-2020 10:22
Me alegro David, un saludo.
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
0 # Editor 08-04-2020 21:40
Muchas gracias a ti por comentar, un saludo.
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
0 # rf 18-09-2020 01:31
Muy buena opción
Responder | Responder con una citación | Citar
0 # Jose Bocelli 06-08-2021 04:44
ESPECTACULAR!!! Solucionado
Responder | Responder con una citación | Citar
0 # Miriam 07-02-2023 18:53
Muchisisisimas gracias!!!
Responder | Responder con una citación | Citar
+1 # toni 29-11-2023 17:41
perfecto crack, me has ahorrado 7 días de trabajo, gracias.
Responder | Responder con una citación | Citar
0 # Rocksy 30-01-2020 07:49
Muchas gracias!!! Acabo de eliminar mas de 16 mil cuadros de texto!... 16 mil gracias!!!
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
0 # Editor 17-01-2020 11:46
Gracias Salvador por comentarlo.
Un saludo
Responder | Responder con una citación | Citar
0 # DanielR 09-12-2021 17:53
ESTE CONSEJO ME SIRVIO 100%, ME AHORRO MUCHOOOOO.
GRACIAS
Responder | Responder con una citación | Citar
-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?
Responder | Responder con una citación | Citar
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...
Responder | Responder con una citación | Citar
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!!
Responder | Responder con una citación | Citar
+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."
Responder | Responder con una citación | Citar
0 # karmany 12-06-2019 22:32
Muchas gracias por la aportación, habrá que probarla!!!!
Responder | Responder con una citación | Citar
0 # GGEE 12-03-2020 14:45
Me resultó a la perfección, una genialidad esta opción.
Muchas gracias
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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?
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
0 # DANIEL 08-05-2018 18:56
Es lo mejor que he podido encontrar en Internet excelente ayuda
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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."
Responder | Responder con una citación | Citar
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!!
Responder | Responder con una citación | Citar
0 # Bill Gates 19-01-2018 12:22
Muchas gracias, acabo de eliminar 298364 autoshapes gracias a tu script.

Iba un poco lento. :lol:
Responder | Responder con una citación | Citar
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!
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
0 # agente902 31-07-2017 15:21
Si no progrAMO COMO PUEDO QUITAR ' NO SÉ QUE ES ESO DEL CÓDIGO
Responder | Responder con una citación | Citar
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?
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
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: :-) :-) :-)
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
+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 .
Responder | Responder con una citación | Citar
0 # karmany 26-01-2017 23:35
Gracias por comentarlo, seguro que es de ayuda a otros usuarios.
Un saludo Eli.
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
0 # mariano Montenegro 28-06-2016 01:34
gracias a sus soluciones elimine 14260 cuadros de texto, Muchas gracias!!!
Responder | Responder con una citación | Citar
0 # Omar 26-06-2016 21:27
gracias yo tenia 9850 cuadros
Responder | Responder con una citación | Citar
0 # Sergio 23-06-2016 01:35
Excelente....Fe licidades...
Responder | Responder con una citación | Citar
0 # Gerardo 16-06-2016 21:52
Wow , me funciono muy bien ,mis respetos para ti, gracias por comparir
Responder | Responder con una citación | Citar
0 # Li 18-05-2016 12:37
Excelente!!!!

Muchisimas gracias, estaba ya desesperada...
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
0 # Jahaziel D. 30-11-2015 05:43
Hey! Me sirvió mucho, eres un genio, gracias.
Saludos!
Responder | Responder con una citación | Citar
0 # Edwin 14-10-2015 18:14
excelente estos son aportes.....gar cias
Responder | Responder con una citación | Citar
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!!!
Responder | Responder con una citación | Citar
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?
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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
...
Responder | Responder con una citación | Citar
+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!!!
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
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?
Responder | Responder con una citación | Citar
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:
Responder | Responder con una citación | Citar
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!
Responder | Responder con una citación | Citar
0 # Hector 19-12-2014 01:11
Buenisimo el aporte, me estaba poniendo lenta la maquina.
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
0 # Rubén 19-12-2014 11:58
Tendrás que poner una condición antes de eliminar el cuadro de texto.
Responder | Responder con una citación | Citar
0 # zamo 19-12-2014 16:32
lo intentare a ver si no hago mas desastre jajaja gracias
Responder | Responder con una citación | Citar
0 # zamo 19-12-2014 19:19
por mas que lo intento no puedo alguien sabe como hacerlo se los agradeceria mucho
Responder | Responder con una citación | Citar
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?
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
0 # daniel 01-09-2014 19:42
lo maximo me salieron a mi no se como 328963 cuadros de texto muchas gracias
Responder | Responder con una citación | Citar
0 # karmany 04-09-2014 00:21
¡Qué barbaridad! Seguro que iría bien lento
Responder | Responder con una citación | Citar
0 # Armando López 11-07-2014 00:07
Muchas gracias me sirvio para orientarme en un problema similar pero con AutoShape
Responder | Responder con una citación | Citar
0 # karmany 11-07-2014 15:57
Muchas gracias por tu comentario, es bueno saber que te ha sido útil con AutoShape. :-)
Responder | Responder con una citación | Citar
0 # jfloresmtz 26-05-2014 23:10
alguien ya encontro como borrar los rectangulos?
Responder | Responder con una citación | Citar
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...
Responder | Responder con una citación | Citar
+1 # arturo 26-05-2014 18:43
Eres una santa o santo, eso no importa porque todos se van al cielo
Responder | Responder con una citación | Citar
0 # Aitor 26-05-2014 22:29
_
|)`
| |
| |_____
/ (]__)
/ (]___)
/ (]___)
___(]_)
/
Responder | Responder con una citación | Citar
+2 # tylu 16-05-2014 19:27
Gracias!!!!!!!! !!!!!!!!
Responder | Responder con una citación | Citar
0 # karmany 16-05-2014 20:57
¡Saludos! ;-)
Responder | Responder con una citación | Citar
+2 # Wiston Silva 14-05-2014 04:06
Muchisimas gracias amigo, me sirvio mucho!!
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
0 # Aitor 25-03-2014 20:04
¿Qué versión de Excel usas? ¿Cómo sabes que tienes 5225 cuadros de texto?
Responder | Responder con una citación | Citar
+1 # Ramon 01-04-2014 08:52
2007, y me lo pone los cuadros que tengo cuando quiero eliminarlos uno a uno
Responder | Responder con una citación | Citar
+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?
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
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??????
Responder | Responder con una citación | Citar
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...
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
+1 # Aitor 02-04-2014 12:50
Un saludo y que tengas buen día!!
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
0 # Emilio 20-01-2014 19:59
¿Dónde tienes el problema? ¿Qué haces mal? ¿Sabes crear la macro?
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
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!
Responder | Responder con una citación | Citar
-1 # Editor 22-11-2013 18:00
¿Seleccionar todos los cuadros de texto en vez de eliminarlos?
Responder | Responder con una citación | Citar
+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!
Responder | Responder con una citación | Citar
0 # karmany 19-09-2013 23:18
Muchas gracias a ti por comentar. Buen día!!
Responder | Responder con una citación | Citar
+1 # Kambei 11-07-2013 20:36
Gracias por el aporte excelente
Responder | Responder con una citación | Citar
+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?
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
0 # karmany 18-05-2013 21:42
Muchísimas gracias a ti por dejarnos tu comentario.
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
+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.
Responder | Responder con una citación | Citar
-2 # Elena 01-02-2013 11:12
Muchas muchas gracias!!!
Responder | Responder con una citación | Citar
0 # karmany 01-02-2013 15:01
Muchas gracias a ti por dejarnos tu opinión. Un saludo
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
+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:
Responder | Responder con una citación | Citar
+2 # Andrés 10-01-2013 22:13
Flaco sos un capo, te merecés parte de los $$$ que acabo de cobrar.
Saludos!
Responder | Responder con una citación | Citar
0 # karmany 10-01-2013 22:57
Gracias a ti por comentar. Un saludo. ;-)
Responder | Responder con una citación | Citar
+1 # Guillermo A. 26-09-2012 18:28
Muchas gracias, 9000 cuadros eliminados, ahora el archivo vuela jaja
Responder | Responder con una citación | Citar
+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
Responder | Responder con una citación | Citar
0 # karmany 05-09-2012 22:29
Lee otra vez el artículo, a ver si se ha solucionado tu duda...
Un saludo
Responder | Responder con una citación | Citar
0 # Diego Forero 30-07-2014 21:05
y esto porque sucede!!! porque aparecen esos cuadros de la nada???
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
+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...
Responder | Responder con una citación | Citar
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.
Responder | Responder con una citación | Citar
+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!!
Responder | Responder con una citación | Citar
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
Responder | Responder con una citación | Citar
Escribir un comentario
Antes de publicar un comentario, usted debe aceptar nuestras condiciones de uso: Condiciones de uso. Debido al spam, todos los comentarios serán moderados. Normalmente se responde en unos minutos, refresca los comentarios para comprobarlo.



 
Visitas: 8467244