DOS PROGRAMAS EN UNO

02/11/2011 - 10:41 por tm-genius | Informe spam
! Hola ! me encuentro desarrollando una herramienta en excel con macros en VBA, en este momento tengo un libro con varios módulos(uno en cada hoja); pero deseo que el programa se pueda ejecutar para otro ambiente,es decir, es otro caso de aplicación del programa pero necesitare de nuevos módulos para ese ambiente(otras hojas de cálculo donde introduzca las funciones para dicho ambiente), lo que quiero es que no me queden dos programas por aparte(2 libros diferentes) sino que todo quede integrado en un solo libro. La pregunta es: como hago para que cuando el usuario ejecute el programa(abra excel) pueda elegir cual de los dos ambientes utilizar sin que queden todas las hojas de cálculo abiertas, sino solamente las que corresponden al ambiente escogido, o como hago para que se habiliten las celdas que corresponden al ambiente escogido o para deshabilitar las otras, o cual es la mejor opción?

Preguntas similare

Leer las respuestas

#1 Juan Español
13/11/2011 - 16:09 | Informe spam
Hola tm-genius:
Imaginemos que tu aplicación nesesita 5 hojas para trabajar
Desde mi punto de vista la mejor solución sería...
- Una hoja de presentación. (la primera pestaña de hoja)
En esta hoja SE ELIJE (v.g. mediante dos botones) el ambiente en que se
va ha trabajar.
Se añade un cuadro de texto solicitando la aceptación de macros.
- Las hojas 2 a 6 serán en las que se trabaje en el AMBIENTE1
- Las hojas 7 a 11 serán en las que se trabaje en el AMBIENTE2

En ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect
Sheets(1).Visible = xlSheetVisible
Dim h As Integer
For h = 2 To 11
Sheets(h).Visible = xlSheetVeryHidden
Next
ActiveWorkbook.Protect Structure:=True, Windows:=False
Sheets(1).Activate
' Aquí código para mostrar cuadro de texto solicitando aceptar macros
' Aquí código para ocultar los botones de elegir ambiente.
ThisWorkbook.Save
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_Open()
Sheets(1).Activate
'Aquí código para ocultar cuadro de texto solicitando aceptar macros

With Application
If Val(.Version) < 10 Then ' se usa una versión de Excel menor de
2002(XP)10
msg = "SU VERSIÓN DE EXCEL ES INFERIOR A EXCEL 2002, SE CERRARÁ
EL PROGRAMA."
MsgBox msg, vbCritical, TITAPLI

.EnableEvents = False 'no ejecutar macros automáticas de libro y
hojas
ThisWorkbook.Close SaveChanges:=False
.EnableEvents = True

GoTo FIN
End If
End With
' Aquí código para mostrar los botones de elegir ambiente.
ActiveWorkbook.Unprotect
Application.ScreenUpdating = False
Dim h As Integer
For h = 2 To 11
Sheets(h).Visible = xlSheetVeryHidden
Next
Sheets(1).Visible = xlSheetVisible
ActiveWorkbook.Protect Structure:=True, Windows:=False
Sheets(1).Select
With Application
.TransitionNavigKeys = False
.DefaultSaveFormat = xlNormal
End With
Application.ScreenUpdating = True
FIN:
End Sub


Bueno no sé si te ayudo o te complico la vida, en cualquier caso la correcta
protección-desprotección de Hojas y Libro
en el código es indespensable para que funcione sin perder seguridad.

Saludos.-



"tm-genius" escribió en el mensaje de
noticias news:
! Hola ! me encuentro desarrollando una herramienta en excel con macros en
VBA,
en este momento tengo un libro con varios módulos(uno en cada hoja); pero
deseo que el programa se pueda ejecutar para otro ambiente,es decir, es
otro
caso de aplicación del programa pero necesitare de nuevos módulos
para ese ambiente(otras hojas de cálculo donde introduzca las funciones
para dicho ambiente), lo que quiero es que no me queden dos programas por
aparte(2 libros diferentes) sino que todo quede integrado en un solo
libro. La
pregunta es: como hago para que cuando el usuario ejecute el programa(abra
excel) pueda elegir cual de los dos ambientes utilizar sin que queden
todas
las
hojas de cálculo abiertas, sino solamente las que corresponden al
ambiente escogido, o como hago para que se habiliten las celdas que
corresponden
al ambiente escogido o para deshabilitar las otras, o cual es la mejor
opción?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida