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
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
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
- 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
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
- Compartir respuesta