Jump to content

Archived

This topic is now archived and is closed to further replies.

exskizzo

ELIMINAR HOJAS DE UN LIBRO

Recommended Posts

Buenos días a todos.

Les comento lo siguiente: 

Tengo un libro con varias hojas y requiero una macro para eliminar ciertas hojas, necesito se queden las ultimas 5 hojas(Explosión de Materiales, Explosión de Avíos, Listado de Lotes, O.C.M., O.C.A.), también necesito se quede la primer hoja. Las nombro así(primer hoja) ya que no siempre se llamaran así a excepción de las ultimas 5 hojas.

 

Gracias y espero y puedan ayudar

Recorrer hojas.rar

Share this post


Link to post
Share on other sites

Saludos

Hoja1 es el nombre de la hoja que quieres eliminar cambia por el nombre de tu hoja

Sub Macro1()
    Sheets("Hoja1").Select
    ActiveWindow.SelectedSheets.Delete
End Sub

 

Share this post


Link to post
Share on other sites

Gracias @Visor por tu pronta respuesta, te comento lo siguiente: en mi libro siempre estarán y se llamaran como lo indique las cinco hojas (Explosión de Materiales, Explosión de Avíos, Listado de Lotes, O.C.M., O.C.A.) pero antes de esas cinco no siempre habrá 1 o  2 o 3 y no siempre se llamaran como lo indico en el ejemplo. Es por eso que no puedo llamarla Hoja1, porque como bien se puede llamar ("x"), ("y") o ("z"), ademas que la hoja que quiero dejar ademas de las ultimas cinco(Explosión de Materiales, Explosión de Avíos, Listado de Lotes, O.C.M., O.C.A.) también quiero dejar la primer hoja que no siempre tendra un nombre fijo.

 

Gracias y saludos

Share this post


Link to post
Share on other sites

Puedes buscar en Internet hay muchas soluciones a tu consulta, a prueba y Error, busca Index, la cual te ayuda a identificar el orden de las hojas, Prueba y nos comentas, Saludos!!

Share this post


Link to post
Share on other sites

Que tal si reorganizas...las hojas que siempre quieres mantener seran las de codigo Vba Hoja1 Hoja2....hasta hoja6 (que son las que no quieres eliminar) y las que seran eliminadas son las que creas luego de estas existentes, ellas iran adquiriendo el codigo hoja7, hoja8...

Sheets(Array("Hoja7", "Hoja8", "Hoja9")).Delete
Dim i as long
For i = 7 To 12
    Sheets("Hoja" & i).Delete
Next

y por ultimo mas completo

Dim I As Long
Application.DisplayAlerts = False
For I = 7 To 12
    On Error Resume Next
    Sheets("Hoja" & I).Delete
Next
Application.DisplayAlerts = True

Pruebalos

Share this post


Link to post
Share on other sites

Gracias @Mauricio_ODN, y @Visor. El fin de eliminar las hojas que menciono es el siguiente:

Este es un libro con el cual trabajo a diario entonces cada que comienzo con una nueva programación necesito que siempre quede la primer hoja y las ultimas cinco (Explosión de Materiales, Explosión de Avíos, Listado de Lotes, O.C.M., O.C.A.). y que entre la primer hoja y las ultimas cinco queden eliminadas.

 

Gracias y quedo en espera de su ayuda 

Share this post


Link to post
Share on other sites
Cita

hay algunas diferencias entre haber a ver

(solo porque parece una constante el uso que das a la expresión)

saludos,
hector.

Jejejejejeje, Tienes la Razón Hector, muchas gracias, espero en un futuro dar el uso correcto, (a ver si no me equivoco aqui, jejejejejejeje), pero he demostrado que mi haber léxico es escaso. Saludos Hector!""

Share this post


Link to post
Share on other sites
Sub ELIMINA_TODAS_MENOS_SEIS()
Application.DisplayAlerts = False
For x = Sheets.Count To 2 Step -1
   Select Case Sheets(x).Name
      Case "EXPLOSION DE MATERIALES", "EXPLOSION DE AVIOS", "LISTADO DE LOTES", "O.C.M.", "O.C.A."
      Case Else: Sheets(x).Delete
   End Select
Next
Application.DisplayAlerts = True
End Sub

En cuanto al tema ortográfico, solo hay que fijarse en el corrector automático del foro, si sale subrayado en rojo, algo no está bien. Lamentablemente, no tiene en cuenta los nombres propios, por lo que detectar Héctor en lugar de Hector, es algo complicado, también a ver en lugar de haber no es nada fácil detectarlo si no tienes claras las estructuras gramaticales, pero en el foro, lo mas importante es saber Excel y la buena voluntad. :), en cualquier caso, nunca te arrepientas de como escribes. ¡Sigue aportando lo que sabes!

Share this post


Link to post
Share on other sites
Cita

 pero en el foro, lo mas importante es saber Excel y la buena voluntad. :), en cualquier caso, nunca te arrepientas de como escribes. ¡Sigue aportando lo que sabes!

Gracias Maestro @Antoni, por su impecable aporte y sus sabias palabras

¡Saludos desde México!

Share this post


Link to post
Share on other sites

hola, a todos !

mi "granito de arena" (cuando se puede) prefiero evitar "acciones" por bucles y que se hagan "de golpe"...

Sub ConservaUnaYCinco()
' procedimiento para eliminar hojas intermedias dejando solo la primera y las cinco ultimas... ' _
  R&D: Héctor Miguel Orozco Díaz (junio 27, 2017) '
  Dim x As Byte, y As Byte: x = Worksheets.Count
  If x < 7 Then Exit Sub Else y = x - 6 + 1
  Application.DisplayAlerts = False
  Worksheets(Evaluate("transpose(row(2:" & y & "))")).Delete
  Application.DisplayAlerts = True
End Sub

y una "ligera" corrección"...

Hace 54 minutos , Antoni dijo:

nunca te arrepientas de como escribes

nunca, al igual que siempre, son palabras que requieren evaluar su contexto y pensar (más de dos veces) antes de expresarlas, en este caso, inhiben la posibilidad de una mejora permanente o constante, (creo que) sería mejor esta expresión:

no te arrepientas de como "escribiste", en cualquier caso, si puedes aprender a escribir mejor... HAZLO !!!

saludos,
hector.

Share this post


Link to post
Share on other sites
Cita

hola, a todos !

mi "granito de arena" (cuando se puede) prefiero evitar "acciones" por bucles y que se hagan "de golpe"...

Cita

Sub ConservaUnaYCinco()
' procedimiento para eliminar hojas intermedias dejando solo la primera y las cinco ultimas... ' _
  R&D: Héctor Miguel Orozco Díaz (junio 27, 2017) '
  Dim x As Byte, y As Byte: x = Worksheets.Count
  If x < 7 Then Exit Sub Else y = x - 6 + 1
  Application.DisplayAlerts = False
  Worksheets(Evaluate("transpose(row(2:" & y & "))")).Delete
  Application.DisplayAlerts = True
End Sub

Una pregunta Héctor, y si el orden de las hojas cambia, en este código que nos compartes (Muy bueno por cierto), ¿Respetara las hojas que se necesitan conservar?

Cita

Explosión de Materiales, Explosión de Avíos, Listado de Lotes, O.C.M., O.C.A.

Saludos

Share this post


Link to post
Share on other sites
Hace 3 horas, Mauricio_ODN dijo:

... si el orden de las hojas cambia... este código... Respetara las hojas ...

la propuesta está adaptada para trabajar según el índice/orden de las hojas en el libro (como se indica en la consulta original), si el orden no es lo indicado, se trabaja con los nombres de las hojas (que también podrían "sufrir alteraciones" desde la interfaz con el usuario ?) y también existen métodos para evitar acciones "en cada paso de un bucle", y como dicen en mi pueblo: "hay maña para todo" y "según el sapo es la pedrada" ;)

saludos,
hector.

Share this post


Link to post
Share on other sites

Muchas gracias a todos los que se tomaron el tiempo de leer mi tema pero sobre todo a los que se tomaron el tiempo que posiblemente no tuvieron y me ayudaron . 

Doy por solucionado el tema

Gracias y saludos

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




×
×
  • Create New...

Important Information

Privacy Policy