Bloquear o deshabilitar la configuración de la hoja de excel

Quisiera saber, si hay alguna forma, macro, opción de bloquear la opción de configuración de páginas o hoja con la que estoy trabajando.

Ósea que no me puedan cambiar las medidas de la hoja que tengo mis datos.

La hoja y el libro lo tengo protegido, pero se puede cambiar la configuración y eso no quiero que suceda.

1 respuesta

Respuesta
2

Una opción es que pongas en una macro todos los datos predeterminado de impresión que deseas. Entonces en un módulo pon la macro: DatosImpresion

Para obtener los datos de impresión, realiza una grabación de macro, establece primero los datos de tu impresión.

Entra a Programador, Grabar macro.

Ahora, entra a Diseño de página, Configurar página, Aceptar.

Programador, Detener macro.

Listo, la macro que grabaste ahora tiene tus datos de impresión, por ejemplo:

Sub DatosImpresion()
'Por.Dante Amor
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.708661417322835)
        .RightMargin = Application.InchesToPoints(0.708661417322835)
        .TopMargin = Application.InchesToPoints(0.748031496062992)
        .BottomMargin = Application.InchesToPoints(0.748031496062992)
        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
        .FooterMargin = Application.InchesToPoints(0.31496062992126)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperLetter
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
End Sub

Para entrar a VBA y ver tu macro, presiona ALT + F11. Pon tu macro resultante con el nombre de: DatosImpresion, como lo tengo en mi ejemplo.


Ahora, en los eventos de Thisworkbook pon esta macro:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Por.Dante Amor
    DatosImpresion
End Sub

Instrucciones para poner la macro en los eventos ThisWorkbook

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
  4. Del lado derecho copia la macro

Cada vez que modifiquen la configuración de la hoja, pero vayan a imprimir, en automático, la configuración tomará la que pusiste en la macro.


Saludos. Dante Amor

Si es lo que necesitas.

¿Hola dante si grabo una macro y lo quiero usar el archivo en otra pc tendré que grabar nuevamente la macro?

Me olvide de especificar que en la hoja1 tengo tamaño carta en la hoja2 tamaño offcio y en la hoja3 tamaño carta

Realiza la grabación de cada hoja y me envías las 3 macros, en alguna parte escribe para cuál hoja es y el nombre de la hoja.

Entonces ejecutamos la macro y que recorra todas las hojas y que a cada hoja le ponga su configuración particular.

Dante estuve realizando con una hoja y funciona pero lo malo es que lo guardas las medidas modificadas y tiene que ejecutar la macro manualmente; no habrá una forma que lo haga automáticamente...

Saludos....

Disculpa, pero no entendí, tienes que grabar las macros, una por cada hoja, cuando grabas la macro te pone esto:

With ActiveSheet.PageSetup

Lo que hay que hacer en cada macro es cambiar ActiveSheet por el nombre de esa hoja.

Cada macro deberá tener en lugar de ActiveSheet, el nombre de la hoja, por ejemplo

sub macro1()

with sheets("Hoja1").pagesetup

    'lo demás

end with

end sub


sub macro2()

with sheets("Hoja2").pagesetup

    'lo demás

end with

end sub


sub macro3()

with sheets("Hoja3").pagesetup

    'lo demás

end with

end sub


Y en la macro que va en los eventos del libro:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Por.Dante Amor
    Macro1
    Macro2
    Macro3
End Sub

De esa forma siempre se actualizarán la configuración de cada hoja.

Saludos. Dante Amor

Dante mira no se si te acuerdas del archivo de las notas?.... son 35 hojas, imaginate grabar 35 hojas, hay alguna otra manera de hacerlo; osea como copiar y pegar lo mismo en cada hoja?....

Gracias

Busca en la red cómo deshabilitar la cinta de impresión del menú

Gracias dante , me costo pillarlo pero lo pille.

Gracias

Dante creo que no nos entendemos lo que me indicaste anteriormente funciona bien, lo malo que para ponerla a las medida (carta) que quiero con las que se quede y no se modifique.

Al modificar o guardar el archivo con otra medida (oficio, carta plus, etc) agrega esa configuración y también lo guardo.

Para que vuelva a su configuración inicial (carta) tengo que ejecutar la macro de una forma manual y quiero que seas de una forma automática; al momento de cambiar vuelva inmediatamente a sus medidas iniciales, como si no hubieran tocado la configuración.

Si, disculpa, creo que ahora no entendí.

Entiendo que tienes varias hojas y que cada hoja tiene su configuración propia, ¿es correcto?


Por otra parte existen códigos en vba que bloquean u ocultan todo el menú, por ejemplo, de esa forma no podrían cambiar la configuración de la hoja.

Sub OcultarMenu()
'Por.Dante Amor
    Application.DisplayStatusBar = False
    Application.DisplayCommentIndicator = 0
    Application.CommandBars("Formatting").Visible = False
    Application.CommandBars("Standard").Visible = False
    Application.DisplayFormulaBar = False
    ExecuteExcel4Macro ("show.toolbar(""ribbon"",0)")
    Application.WindowState = xlNormal
    Application.WindowState = xlMaximized
    Application.ThisWorkbook.Protect Windows:=True
End Sub

Para mostrar el menú:

Sub MostrarMenu()
'Por.Dante Amor
    Application.DisplayStatusBar = True
    Application.DisplayCommentIndicator = 1
    Application.CommandBars("Formatting").Visible = True
    Application.CommandBars("Standard").Visible = True
    Application.DisplayFormulaBar = True
    ExecuteExcel4Macro ("show.toolbar(""ribbon"",1)")
End Sub

Gracias dante por tu ayuda... Me sirvió de mucho y más que suficiente.

Thank...

Y si solo quisiera bloquee la pestaña u opción de diseño de página. Sin ir a cinta de hoja.

Gracias dante...

No he encontrado sobre el tema, si lo encuentro lo posteo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas