Estuve intentando por este lado pero queda un código con bastantes
limitaciones y sobre todo hay que estar trabajando con la barra de menú (que
no me deja ocultarla).
¿Se le ocurre algo mejor a alguien? De paso otra cosa que no pude es
utilizar un For each control para ocultar los elementos del Menú en lugar de
ocultarlos uno por uno. ¿Cómo sería la forma correcta? (excluyendo un obvio
for con un indice)
Saludos.
--
Adriano D'Ambra
Expert MOUS - Analista en Informática
Coord. de Capacitación Informática
Dpto. de Informática
Universidad FASTA
----------------------------------------------------------------------------
----------------------------------------------------------------------------
---------
Nota: Se llama a MostrarTodo desde el Activate del libro con True como
parámetro
Sub OcultaTodasMenos(NombreHoja)
'Oculta todas las hojas menos la que sea necesaria
Dim HOJA As Worksheet
Sheets(NombreHoja).Visible = True
Sheets(NombreHoja).Select
For Each HOJA In Sheets
If UCase(HOJA.Name) <> UCase(NombreHoja) Then HOJA.Visible = False
Next HOJA
Sheets(NombreHoja).Select
End Sub
Sub MuestraTodas()
Dim HOJA As Worksheet
For Each HOJA In Sheets
HOJA.Visible = True
Next HOJA
End Sub
Sub MostrarTodo(ByVal Mostrar As Boolean)
'Dim MiControl As CommandBarControl
With Application
.ScreenUpdating = False
'.DisplayFullScreen = Not Mostrar
.DisplayScrollBars = Mostrar
.DisplayFormulaBar = Mostrar
.DisplayStatusBar = Mostrar
'.WindowState = xlMinimized
'.Visible = Mostrar
'.WindowState = xlMaximized
.CommandBars("Drawing").Visible = Mostrar
.CommandBars("Formatting").Visible = Mostrar
.CommandBars("Standard").Visible = Mostrar
'If Mostrar Then
' .CommandBars("Worksheet Menu Bar").Controls(1).Delete
'Else
' .CommandBars("Worksheet Menu Bar").Controls.Add
Type:=msoControlButton, ID:=752, Before:=1
'End If
'For Each MiControl In .CommandBars("Worksheet Menu Bar")
' MiControl.Visible = Mostrar
'Next MiControl
.CommandBars("Worksheet Menu Bar").Controls(1).Visible = Mostrar
.CommandBars("Worksheet Menu Bar").Controls(2).Visible = Mostrar
.CommandBars("Worksheet Menu Bar").Controls(3).Visible = Mostrar
.CommandBars("Worksheet Menu Bar").Controls(4).Visible = Mostrar
.CommandBars("Worksheet Menu Bar").Controls(5).Visible = Mostrar
.CommandBars("Worksheet Menu Bar").Controls(6).Visible = Mostrar
.CommandBars("Worksheet Menu Bar").Controls(7).Visible = Mostrar
.CommandBars("Worksheet Menu Bar").Controls(8).Visible = Mostrar
.CommandBars("Worksheet Menu Bar").Controls(9).Visible = Mostrar
.CommandBars("Worksheet Menu Bar").Controls(10).Visible = Mostrar
End With
End Sub
Sub EntornoNormal(ByVal Mostrar As Boolean)
Application.CommandBars("Formatting").Visible = Mostrar
Application.CommandBars("Standard").Visible = Mostrar
Application.CommandBars.ActiveMenuBar.Enabled = Mostrar
Application.CommandBars.ActiveMenuBar.Visible = Mostrar
With ActiveWindow
.DisplayHeadings = Mostrar
.DisplayWorkbookTabs = Mostrar
End With
With Application
.ShowStartupDialog = Mostrar
.DisplayFormulaBar = Mostrar
.DisplayStatusBar = Mostrar
.ShowWindowsInTaskbar = Mostrar
End With
End Sub
"Adriano D'Ambra" <dam...@ufasta.edu.ar> escribió en el mensaje
news:OAlet9xR...@TK2MSFTNGP12.phx.gbl...
tratando de 'acoplar' estos comentarios a ambos mensajes ;)
> Adriano D'Ambra escribio en el mensaje {1}
> ... he visto un metodo para hacer que Excel pase a pantalla completa pero ...
1 > ... efecto de minimizar-maximizar no me gusta para nada.
2 > ... aparte tiene el problema que al minimizar y maximizar otra vez aparece ... la barra de formulas.
3 > ... intentando ... hay que estar trabajando con la barra de menu (que no me deja ocultarla) [...]
4 > Nota: Se llama a MostrarTodo desde el Activate del libro con True como parametro [sigue codigo...]
>> Adriano D'Ambra escribio en el mensaje {2}
5 >> Encontre un mejor metodo. Espero que les sirva. [sigue codigo...]
1.- la accion de minimizar -> volver 'invisible' a la aplicacion -> maximizar...
es requisito [indispensable] para 'ocultar' [tambien] =>la barra de titulo de la aplicacion<=
[si fuera necesario ampliar 'al maximo' el 'campo visual' de la hoja de trabajo]
2.- la 're-aparicion' de la barra de formulas [parece que] es parte de los comportamientos 'extraños' del 'FullScreen' :(
[en este caso, es mejor aplicar un procedimiento como el que apuntas en tu segundo mensaje]
=>dejando 'fuera de la accion'<= a la barra de titulo de la aplicacion :(
3.- en cuanto a 'trabajar' con la barra de menus... [como ya lo has averiguado] es 'solo' cuestion de 'inhabilitarla' ;)
'pero'... teniendo la precaucion de 're-hablitarla' =>antes de salir<= de 'tu' aplicacion <=OJO
=>NO es de las caracteristicas que se restablecen 'por si solas'<=
4.- [creo que] el parametro [True o False] 'debiera' ser indicado al contrario: False [en el evento _Activate] ;)
5.- solo algunos comentarios acerca de [y tratando de 'aportar algo a'] este nuevo metodo.....
a) en cuanto a los menus... [como te mencione anteriormente] es 'solo' cuestion de 'inhabilitarlos'
b) en cuanto a las barras de herramientas...
=>solo<= estas 'afectando' las 'normales' [estandar y formato] por lo que...
si el usuario 'usa otras'... [ni las 'tocas'] y SI lo vas a 'obligar' a que 'las vea' [al 'regresar' a SU libro] :((
c) por lo 'tocante' a los 'headings' y los 'workbooktabs'... =>es 'similar' al punto anterior<=
los 'tabs' SON 'parte de' cada libro y los 'headings' SON 'parte de' cada hoja
[al menos, 'en teoria'] =>se 'graban'<= [en su 'estado actual'] como parte de cada libro/hoja.
[nuevamente] SI el usuario lo/s mantiene oculto/s =>en SU libro 'normal'<=... TU se los 'muestras' de nuevo :((
d) [valdria la pena revisar en la ayuda que efectos tienen 'realmente' por lo que respecta a...]
- 'showwindowsintaskbar' ['disponible' a partir de excel 2000]
- 'showstartpdialog' ['disponible' a partir de excel 2002]
para 'dejar afinados' los puntos 5.a y 5.b [yo haria lo siguiente]...
Sub EntornoNormal(ByVal Mostrar As Boolean)
Dim Barra As CommandBar
With Application
For Each Barra In .CommandBars
Barra.Enabled = Mostrar
Next
.DisplayFormulaBar = Mostrar
.DisplayScrollBars = Mostrar
.DisplayStatusBar = Mostrar
End With
End Sub
[dejo a tu criterio lo de los 'headings' y los 'workbooktabs' =>que son 'opcion' de cada usuario<=] ;)
¿comentas?
saludos,
hector.
Un saludo.
Por ahora este sería el resumen del código. (lo que hago también es mostrar
la hoja que me interesa)
Sub MostrarTodo(ByVal Mostrar As Boolean)
Dim Barra As CommandBar
With Application
.ScreenUpdating = False
.ShowStartupDialog = Mostrar
For Each Barra In .CommandBars
Barra.Enabled = Mostrar
Next
.DisplayFormulaBar = Mostrar
.DisplayScrollBars = Mostrar
.DisplayStatusBar = Mostrar
.CommandBars.ActiveMenuBar.Enabled = Mostrar
End With
With ActiveWindow
.DisplayHeadings = Mostrar
.DisplayWorkbookTabs = Mostrar
End With
End Sub
Sub OcultaTodasMenos(NombreHoja)
Dim HOJA As Worksheet
Sheets(NombreHoja).Visible = True
Sheets(NombreHoja).Select
For Each HOJA In Sheets
If UCase(HOJA.Name) <> UCase(NombreHoja) Then HOJA.Visible = False
Next HOJA
Sheets(NombreHoja).Select
End Sub
Sub MuestraTodas()
Dim HOJA As Worksheet
For Each HOJA In Sheets
HOJA.Visible = True
Next HOJA
End Sub
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje
news:OCTYdH3...@TK2MSFTNGP10.phx.gbl...
Saludos.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
OcultaTodasMenos ("MenuPpal")
MostrarTodo True
End Sub
Private Sub Workbook_Activate()
Application.ScreenUpdating = False
Worksheets("MenuPpal").Select
MostrarTodo False
End Sub
Private Sub Workbook_Deactivate()
Application.ScreenUpdating = False
MostrarTodo True
End Sub
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje
news:OCTYdH3...@TK2MSFTNGP10.phx.gbl...