barra de herramientas

31/05/2007 - 17:45 por j.benito | Informe spam
Hola a todos
Tengo un conjunto de cuatro libros, que se llaman

Autorizados
Lineas
Movimientos y
Cargoencuenta

Como los he ido desarrollando mientras aprendía, las instrucciones que
tienen estan todas asociadas a botones en cada hoja.
Desde la empresa quieren que todas las provincias también trabajen con
ellos por lo que ahora quiero mejorar los libros haciendo una barra que
sea común a todos.
Crear la barra y poner los botones no me supone problema (leyendo por
ahí) siempre que sea para cada libro en particular, pero no se como
hacer para que cuando abro uno de los libros me compruebe si ya se ha
abierto otro y me cargue los botones que le son propios y en caso de que
no haya ninguno de los libros abiertos, cree la barra y le asigne los
botones.
Por la misma "regla de tres", no tengo problemas en eliminar la barra
cuando cierro un libro, pero no sé como hacer para mirar a ver si queda
alguno de los otros cuatro abiertos y mantener la barra y solo quitar
los botones de ese libro

El código que utilizo para un libro es

En ThisWorkbook

Private Sub Workbook_Open()
Dim barra As CommandBar

On Error Resume Next
Application.CommandBars("Estadisticas").Delete
On Error GoTo 0

Set barra = Application.CommandBars.Add
With barra
.Name = "Estadisticas"
.Visible = True
.Position = msoBarTop
.Protection = msoBarNoCustomize
End With
botones
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Estadisticas").Delete
End Sub

en un modulo normal para incorporar los botones, (solo pongo un ejemplo)

Sub botones()
Dim boton1 As CommandBarButton
Set boton1 = CommandBars("Estadisticas")._
Controls.Add(Type:=msoControlButton)
With boton1
.FaceId = 357
.OnAction = "Empresas"
.Caption = "Ver empresas remitidas"
.Visible = True
End With
End Sub


Espero haberme explicado bien.
Gracias anticipadas
J.Benito
 

Leer las respuestas

#1 Héctor Miguel
01/06/2007 - 02:23 | Informe spam
hola, j.benito !

... conjunto de cuatro libros, que se llaman Autorizados, Lineas, Movimientos y Cargoencuenta
... instrucciones... asociadas a botones en cada hoja.
... quiero mejorar los libros haciendo una barra que sea comun a todos.
... barra y... botones no me supone problema (leyendo por ahi) siempre que sea para cada libro en particular
... como hacer para que cuando abro uno de... compruebe si ya se ha abierto otro y me cargue los botones que le son propios
... en caso de que no haya ninguno de los libros abiertos, cree la barra y le asigne los botones.
... no tengo problemas en eliminar la barra cuando cierro un libro
... como hacer para mirar a ver si queda alguno de los otros cuatro abiertos y mantener la barra y solo quitar los botones de ese libro



1) pareciera entenderse que...
a) las macros/acciones/... 'pertinentes/propias/aplicables/...' son distintas para cada uno de los libros -?-
b) necesitas/pretendes/... una sola barra personalizada que conjunte las acciones para todos los libros -?-
c) que de igual forma, las acciones inherentes a un libro no sean 'ejecutables' para/en/con/... otros libros ?

2) [probablemente] te convendria generar un libro 'maestro' que sea el encargado de:
a) contener los codigos aplicables para la generacion/eliminacion de la barra y todos los botones [y sus macros]
b) monitorear el libro 'activo' para des/re/habilitar 'sus' botones y macros 'inherentes/aplicables/...' [incluso la misma barra]

3) otra alternativa es usar la opcion de guardar [todos] los libros como *area de trabajo* -?-
lo que no 'evita' la necesidad de otro tipo de 'monitoreos', pero te asegura que todos los libros del *grupo* se mantienen *agrupados*

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

__ el codigo expuesto __
El codigo que utilizo para un libro es
En ThisWorkbook
Private Sub Workbook_Open()
Dim barra As CommandBar
On Error Resume Next
Application.CommandBars("Estadisticas").Delete
On Error GoTo 0
Set barra = Application.CommandBars.Add
With barra
.Name = "Estadisticas"
.Visible = True
.Position = msoBarTop
.Protection = msoBarNoCustomize
End With
botones
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Estadisticas").Delete
End Sub

en un modulo normal para incorporar los botones, (solo pongo un ejemplo)
Sub botones()
Dim boton1 As CommandBarButton
Set boton1 = CommandBars("Estadisticas")._ Controls.Add(Type:=msoControlButton)
With boton1
.FaceId = 357
.OnAction = "Empresas"
.Caption = "Ver empresas remitidas"
.Visible = True
End With
End Sub

Preguntas similares