Ir al contenido principal

mostrar hojas ocultas en un libro de Excel

Estimados amigos !!! Llevo mas de un año sin publicar una entrada en mi querido Blog, espero que sepan disculpar tamaña falta de respeto hacia todos mis lectores. Problemas de índole personales y laborales me llevaron a dejar es hobbie tan hermoso que tengo, pero de a poco voy retornando. Espero, de ahora en mas, cumplir con mis publicaciones semanales y ayudar con las consultas que me realicen, mas allá de que esto último lo estuve haciendo a través de mi página en Facebook (https://www.facebook.com/excel.maniacos)

Bueno, vasta de disculpas (aunque las merecen sobradamente) y volvamos al trabajo. Me hicieron una consulta bastante interesante y levantaré un post al respecto: "tengo un libro cualquiera, con algunas hojas 'invisibles'... ¿como hago para mostrarlas y poder ver su contenido?". Este lector y amigo ha tenido mucha suerte en que, generalmente, debo programar en entornos muy restringidos, lo cual me volvió un poco "práctico" sobre estos asuntos de andar averiguando como ver cosas que otros ocultaron. Empecemos.

[+/-] Ver el resto / Ocultar

Comentarios

  1. Damian, gracias por la macro que puede servir si hay muchas hojas ocultas.

    Cuando hay pocas hojas muy ocultas, aunque el usuario no las vea, si que se ven en el editor VBA y se puede cambiar su propiedad Visible en cualquier momento, excepto cuando se intenta ocultar la última hoja visible, pues siempre tiene que haber una visible lo que indica Excel con un mensaje de aviso.

    Bienvenido de nuevo a la visibilidad de los blogs.

    ResponderEliminar
  2. Hola Pedro !!! Estimado amigo, gracias por tus comentarios y aportes, realmente sos un gran gran programador en Excel, conocedor de herramientas y técnicas muy complejas.
    Vos sabes que de este tema en particular, cuando lo "resolví" hace muchos años, me llamó la atención que aunque el VBA del libro esté bloqueado para visualización, con password incluído, este sencillo código muestra la hoja oculta. Todo un tema, ya que siempre le aconsejo a mis lectores no usar Excel para almacenar información sensible, ya que siempre se puede crackear y así quedar nuestros datos expuestos.
    Un gran abrazo. Sobre el margen izquierdo, deboajo de "Ver Mapa", agregué un link a tu Blog, para que los que visiten el mío tengan la oportunidad de ir hacia el tuyo y conocer esos grandes sistemas que creas.

    ResponderEliminar
  3. Saludos, Estoy haciendo una macro que me saque un resumen en este caso de las ventas de un mes, con lo que he aprendido y con la ayuda de la grabadora de macros logre sacar un codigo que ordena los datos de la hoja Cons.Ventas Por Proveedor luego insetar subtotales de ahi delvuelve a la hoja Resumen los datos de estos subtotales con las caracteristicas que nesesito. Hasta ahi bien. El problema que tengo es que el bucle que deberia dar fin a la ejecucion de la macro no funciona y la macro se sigue ejecutando devolviendo al final de la hoja Resumen datos que no corresponden.

    Codigo.
    Sub ResumenInventario()

    'Application.ScreenUpdating = False
    Application.CutCopyMode = False

    Worksheets("Cons. Vtas por proveedor").Activate

    ActiveWorkbook.Worksheets("Cons. Vtas por proveedor").Sort.SortFields.Add Key _
    :=Range("D1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal

    'Selection.Sort Key1:=Range("d1"), Order1:=xlAscending, Header:=xlGuess, _
    'OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

    ActiveWorkbook.Worksheets("Cons. Vtas por proveedor").Sort.SortFields.Add Key _
    :=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal

    'Selection.Sort Key1:=Range("a1"), Order1:=xlAscending, Header:=xlGuess, _
    'OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

    Range("a1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Subtotal GroupBy:=4, Function:=xlSum, TotalList:=Array(5, 7), _
    Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    Range("D10000").End(xlUp).Offset(1, 0).Value = "1"

    Worksheets("Resumen").Activate
    Range("B3").Select
    Worksheets("Cons. Vtas por proveedor").Activate
    Range("d1").Select

    Do While ActiveCell.Value <> "1"

    Application.CutCopyMode = False
    Cells.Find(What:="Total", After:=ActiveCell, SearchOrder:=xlByColumns).Activate

    ActiveCell.Offset(-1, -3).Select
    Selection.Copy
    Worksheets("Resumen").Activate
    ActiveSheet.Paste
    ActiveCell.Offset(0, 1).Select

    Worksheets("Cons. Vtas por proveedor").Activate
    ActiveCell.Offset(0, 3).Select
    Selection.Copy
    Worksheets("Resumen").Activate
    ActiveSheet.Paste
    ActiveCell.Offset(0, 1).Select

    Worksheets("Cons. Vtas por proveedor").Activate
    ActiveCell.Offset(0, 8).Select
    Selection.Copy
    Worksheets("Resumen").Activate
    ActiveSheet.Paste
    ActiveCell.Offset(0, 1).Select

    Worksheets("Cons. Vtas por proveedor").Activate
    ActiveCell.Offset(0, 1).Select
    Selection.Copy
    Worksheets("Resumen").Activate
    ActiveSheet.Paste

    Worksheets("Cons. Vtas por proveedor").Activate
    ActiveCell.Offset(1, -6).Select
    Selection.Copy
    Worksheets("Resumen").Activate
    ActiveCell.Offset(0, 4).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    ActiveCell.Offset(0, -1).Select

    Worksheets("Cons. Vtas por proveedor").Activate
    ActiveCell.Offset(0, -2).Select
    Selection.Copy
    ActiveCell.Offset(0, -1).Select
    Worksheets("Resumen").Activate
    Selection.PasteSpecial Paste:=xlPasteValues
    ActiveCell.Offset(1, -6).Select

    Worksheets("Cons. Vtas por proveedor").Activate
    Loop
    'Range("a:n").Select
    'Selection.RemoveSubtotal
    'Range("A1").Select
    'Application.ScreenUpdating = True

    End Sub
    Saludos
    LuisV

    ResponderEliminar
  4. vas a tener que enviarme el archivo por que no comprendo muy bien el código, como así tampoco la condición que le estás dando al bucle para que se ejecute. necesito ir haciendo el paso a paso y ver si esa forma de grabar la macro sirve ante cambios en la cantidad de registros.

    ResponderEliminar
  5. Damian vos sabes que estaróa necesitando que en una un sumar.si que contenga 4 número por ejemplo que me sume 112225,112280,112298,112255, es decir que me sume los valores que contenga1122, sludos.

    ResponderEliminar
  6. Aquí te dejo el link a la entrada que armé con tu consulta:
    http://damianexcel.blogspot.com.ar/2014/03/una-mas-de-suma-condicional-en-excel.html
    Suerte y cualquier cosa me avisas

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

funciones: convertir numeros a letras con excel

En realidad hace tiempo que vienen consultándome sobre esto... quizás cinco o seis años . Debe ser una de las funciones mas buscadas de Excel, por lejos: la posibilidad de escribir: 1.534,63 y que en una celda aparezca magicamente "un mil quinientos treinta y cuatro c/15/100". Aquí les dejo una solución, basada en funciones , sin utilizar macros, la cual preparé exclusivamente para este Blog. A pesar de los millones de usuarios que requieren esta herramienta, no viene incorporada en Excel, debemos armarla nosotros mismos .  Luego de la imagen irá la explicación de como llegué a lograr esto, dado que es un proceso medianamente complejo , que utiliza tres o cuatro funciones básicas y requiere de varios pasos. así quedará nuestra planilla y siempre devolverá en letras el valor que ingresemos en A1 [+/-] Ver el resto / Ocultar Desde ya aclaro: esta no es " la forma " de hacerlo, simplemente es una mas, evitando el uso de macros. Sobre esta base, comencemos: 1) El núme

macros: como enviar mails desde Excel (vba)

Un gran amigo "on-line", Johan Moreno, de Colombia , me hizo llegar la inquietud de cómo enviar mails desde Excel . Si bien contaba con algunas líneas de código sobre el particular, decidí retomar mi ejemplo y adaptarlo mejor a las circunstancias. Hace unos minutos termino de remitirle un correo con la solución a Johan... desde Excel y con un archivo adjunto, mismo que transcribo a continuación para ayudar a todos con esta tarea. Veamos primero las dos formas principales de enviar mails: mediante Outlook o nuestro Web Mail ( yahoo, gmail, hotmail, etc, etc ) No soy usuario de Outlook en lo absoluto: no confío en los agujeros de seguridad que continuamente aparecen y, por otro lado, t eniendo a mi alcance una herramienta tan poderosa (y gratuita) como Gmail, la cual ahora también permite sincronizar los mensaje con la Pc para verlos offline (deben activarlo en "google labs") ... no creo que me haga usuario ni hoy ni mañana. Igualmente mas adelante daré una solució

buscarv con varios resultados

Es de las preguntas mas recurrentes que he tenido: ¿se puede lograr que la función BUSCARV() devuelva varios resultados? Si recordamos el uso de esta función, sabremos que la misma buscar en valor en el rango especificado, retornando un solo resultado. Si en la tabla tenermos varios registros iguales BUSCARV() solo nos devolverá el primero de ellos, omitiendo el resto. Entonces ¿se puede? Bueno, aplicando otra técnica sencilla que se me ocurrió al intentar solucionar el planteamiento de un lector... si, puedo hacerlo.... pero sin usar BUSCARV(). la idea es que coloquemos en E1 el código del producto a buscar y a partir de E2 nos devuelva todas las coincidencias de la tabla. [+/-] Ver el resto / Ocultar Vamos a necesitar una columna "auxiliar" para llevar a buen término este proyecto. Con macros el tema sería mas sencillo, pero aquí la cuestión es resolverlo con las funciones de Excel, sin VBA. Paso a paso: Como primer medida chequeamos que valores de la columna A coincide co