Jump to content

ELIMINAR HOJAS DE UN LIBRO


exskizzo

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

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

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

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 

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!""

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!

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.

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

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.

Link to post
Share on other sites

Archived

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

Guest
This topic is now closed to further replies.


  • Posts

    • Hola @Serch! Adjunto una alternativa empleando una columna auxiliar! Saludos! Ejemplo busqueda de valor correspondiente para cada semana.xlsx
    • Hola buenos dias, solicito de su apoyo ya que necesito encontrar un valor "ID" de una "Tienda" a lo largo de 1 mes y que me de como resultado para cada semana el "ID" de la persona que fue a visitar esa tienda.   Espero me puedan ayudar, adjunto ejemplo e instrucciones dentro de este.   mil gracias y saludos.¡¡¡ Ejemplo busqueda de valor correspondiente para cada semana.xlsx
    • saludos. estoy desarrollando un formulario en los deseo calcular varios textbox y mostrar el resultado en otros, el problema radica cuando los coloco con formato de miles los cálculos no funcionan; por favor si alguien me puede dar una ayuda o indicarme el procedimiento. ya he utilizado el cdbl(replace((.. obteniendo el mismo resultado. adjunto enlace. https://drive.google.com/drive/folders/1mPjlo-c7rCrwALgK9pF20e3J-XQG8Wk6?usp=sharing muchas gracias por su pronta colaboración.
    • Bueno!!, logre hacer que funcione. Este seria el codigo final. ' Modulo NoCoincidencia Dim SerialNoAuditado As Variant On Error GoTo IngresarSerialNoAuditado: SerialNoAuditado = Worksheets("Reg. N-Auditados").Range("B5").Value Resultado = Application.WorksheetFunction.Match(SerialNoAuditado, Worksheets("Laptop").Range("D6:D40005"), 0) If Resultado > 0 Then GoTo SerialAuditado: Else GoTo IngresarSerialNoAuditado: End If ' Aqui es para indicar que el serial esta auditado SerialAuditado: MsgBox "Este equipo fue auditado, por favor registrelo en el modulo correspondiente 'Reg. Entradas o Reg. Salidas'" Borrar_Campos Range("B5").Select Exit Sub IngresarSerialNoAuditado: 'Inicio insertar linea en la hoja registro de equipos no auditados Las etiqueta "NuevoIngreso:" fueron eliminadas. Por favor indiquenme si hay algun error o se puede mejorar el codigo. Agradecido de antemano
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy