recorrer las 'otras' barras de Excel

05/12/2006 - 01:49 por Ivan | Informe spam
hola a todos

me gustaria saber si es posible recorrer las 'otras' barras (formulas,
scrollbars, filas y columnas, etiquetas de hojas, estado,...) o al
menos poder conocer su estado (visible/no visible) en determinado
momento mediante codigo. Un poco como con la coleccion commandbars.

se trata de almacenar su estado cuando se abre un archivo determinado,
que oculta todas (casi) al poner las que lleva incorporadas, para
restaurarlas a su estado original cuando se sale de el.

de momento lo hago un poco con las que se me ocurre, pero para prevenir
otras posibilidades, habia pensado que a lo mejor existe una coleccion
contenedora de dichas barras (que creo que no), o en su defecto, la
posibilidad de recorrer el valor de su estado (DisplayHeadings,
DisplayFormulaBar, DisplayStatusBar, etc )

bueno, no se si me he explicado, pero si podeis echarme una mano os lo
agradezco

un saludo y hasta pronto
Ivan
este es uno de los codigos que de momento he probado:->

Sub Reservar_Barras_Ur()
'' COPIA en una hoja las barras de
'' herramientas activas y las OCULTA
Dim BarraUs As CommandBar
Dim Num As Integer
Hoja1.Range("l:m").Clear
Num = 0
On Error Resume Next
For Each BarraUs In CommandBars
If BarraUs.Type <> msoBarTypeMenuBar And BarraUs.BuiltIn Then
If BarraUs.Visible Then
Num = Num + 1
BarraUs.Visible = False
Hoja1.Cells(Num, 12) = BarraUs.Name
End If
End If
Next BarraUs
If Application.DisplayStatusBar = True Then
Hoja1.Cells(1, 13) = "True"
Application.DisplayStatusBar = False
Else
Hoja1.Cells(1, 13) = "False"
End If
If Application.DisplayFormulaBar = True Then
Hoja1.Cells(2, 13) = "True"
Application.DisplayFormulaBar = False
Else
Hoja1.Cells(2, 13) = "False"
End If
On Error GoTo 0
End Sub
 

Leer las respuestas

#1 Héctor Miguel
05/12/2006 - 07:55 | Informe spam
hola, Ivan !

... saber si es posible recorrer las 'otras' barras (formulas, scrollbars, filas y columnas, etiquetas de hojas, estado,...)
o al menos poder conocer su estado (visible/no visible) en determinado momento mediante codigo.
Un poco como con la coleccion commandbars.
se trata de almacenar su estado cuando se abre un archivo determinado, que oculta todas (casi)
al poner las que lleva incorporadas, para restaurarlas a su estado original cuando se sale de el.
de momento lo hago un poco con las que se me ocurre, pero para prevenir otras posibilidades
habia pensado que a lo mejor existe una coleccion contenedora de dichas barras (que creo que no)
o en su defecto, la posibilidad de recorrer el valor de su estado (DisplayHeadings, DisplayFormulaBar, DisplayStatusBar, etc) [...]



1) para los otros elementos graficos que necesitas 'manipular', necesitaras 'atender' a otro tipo de 'disponibilidades' [+/- como sigue]:
a) algunos pertenecen al objeto Application y 'afectan' a todos los libros abiertos en la sesion, p.e. DisplayFormulaBar
b) algunos pertenecen al objeto Window, de aplicacion general [a la ventana del libro], p.e. DisplayScrollBars
c) hay otros que pertenecen al objeto Window, de aplicacion -> para cada hoja en el libro, p.e. DisplayHeadings
[por lo que tendrias que almacenar mas celdas/variables/... segun el numero de hojas en cada libro 'presente' en la sesion] -?-

2) del codigo que expones, la 'necesidad' de la instruccion 'On Error Resume Next' [supongo que]...
se debe a que NO es posible usar la propiedad 'Visible' de la barra de menus 'activa' para establecerla en False
[debe haber al menos una barra de menus 'visile'] ;)
-> si lo que necesitas es 'impedir' el uso de la barra de menus 'integrada' de excel... prueba en su lugar con la propiedad '.Enabled'
[de todas formas 'se oculta' y podras presentar la personalizada] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

___ el codigo expuesto ___
este es uno de los codigos que de momento he probado:->
Sub Reservar_Barras_Ur()
'' COPIA en una hoja las barras de
'' herramientas activas y las OCULTA
Dim BarraUs As CommandBar
Dim Num As Integer
Hoja1.Range("l:m").Clear
Num = 0
On Error Resume Next
For Each BarraUs In CommandBars
If BarraUs.Type <> msoBarTypeMenuBar And BarraUs.BuiltIn Then
If BarraUs.Visible Then
Num = Num + 1
BarraUs.Visible = False
Hoja1.Cells(Num, 12) = BarraUs.Name
End If
End If
Next BarraUs
If Application.DisplayStatusBar = True Then
Hoja1.Cells(1, 13) = "True"
Application.DisplayStatusBar = False
Else
Hoja1.Cells(1, 13) = "False"
End If
If Application.DisplayFormulaBar = True Then
Hoja1.Cells(2, 13) = "True"
Application.DisplayFormulaBar = False
Else
Hoja1.Cells(2, 13) = "False"
End If
On Error GoTo 0
End Sub

Preguntas similares