Jump to content

Archived

This topic is now archived and is closed to further replies.

ULISES

Como unir dos Workbook_Open

Recommended Posts

Buenas tardes compañeros

Primero que todo un saludo y buenos deseos

Tengo dos macros diferentes que tienen dos Workbook_Open y no se como hacer para que funcionen correctamente ya que individual hacen su trabajo pero juntos se genera un error que no permite mostrar las demás hojas del archivo a menos que se guarde el archivo otra ves, lo cual no debería de ser ya que tiene que ser automático al abrir el archivo con las macros activadas.

Este seria uno

Option Explicit
Const WelcomePage = "Macros"

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.EnableEvents = False
With ThisWorkbook
If Not .Saved Then
Select Case MsgBox("Desea guardar los cambios realizados a '" & .Name & "'?", _
vbYesNoCancel + vbExclamation)
Case Is = vbYes

Call CustomSave
Case Is = vbNo
Case Is = vbCancel
Cancel = True
End Select
End If
If Not Cancel = True Then
.Saved = True
Application.EnableEvents = True
.Close savechanges:=False
Else
Application.EnableEvents = True
End If
End With
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Application.EnableEvents = False

Call CustomSave(SaveAsUI)
Cancel = True

Application.EnableEvents = True
ThisWorkbook.Saved = True
End Sub

Private Sub Workbook_Open2()

Application.ScreenUpdating = False
Call ShowAllSheets
Application.ScreenUpdating = True
End Sub

Private Sub CustomSave(Optional SaveAs As Boolean)
Dim ws As Worksheet, aWs As Worksheet, newFname As String

Application.ScreenUpdating = False
Set aWs = ActiveSheet
Call HideAllSheets
If SaveAs = True Then
newFname = Application.GetSaveAsFilename( _
fileFilter:="Excel Files (*.xls), *.xls")
If Not newFname = "False" Then ThisWorkbook.SaveAs newFname
Else
ThisWorkbook.Save
End If
Call ShowAllSheets
aWs.Activate
Application.ScreenUpdating = True
End Sub

Private Sub HideAllSheets()
Dim ws As Worksheet
Worksheets(WelcomePage).Visible = xlSheetVisible
For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = WelcomePage Then ws.Visible = xlSheetVeryHidden
Next ws

Worksheets(WelcomePage).Activate
End Sub

Private Sub ShowAllSheets()
Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = WelcomePage Then ws.Visible = xlSheetVisible
Next ws
Worksheets(WelcomePage).Visible = xlSheetVeryHidden
End Sub
[/HTML]

Y este el otro

[HTML]Private Sub Workbook_Open()
'Desactivamos las teclas de cancelación de macros
Application.EnableCancelKey = xlDisabled
'Eventos que se producen al abrir el libro:
'si le han cambiado el nombre al fichero
'mostraremos un mensaje, y cerraremos
'el libro
If ThisWorkbook.Name <> "Habilitar Macros.xls" Then
'Cargamos el UserForm
Notificacion_de_Seguridad.Show
End If
End Sub
[/HTML]

Agradeceria el apoyo que me puedan prestar

Saludos

Habilitar Macros.rar

Share this post


Link to post
Share on other sites



  • Posts

    • Efectivamente la había dejado preparada... solo una de las dos partes Te dejo la nueva solución. No sé cómo metes los datos de las nuevas hojas, pruebalo. BUSCAR DATO EN OTRA HOJA-1.xlsm
    • Buenas noches amigos de Ayuda Excel. Estoy atorado en una parte del proyecto, y quiero consultarles de que manera se podria realizar lo siguiente. Estoy haciendo un archivo de registro de entradas y salidas de equipos seriabilizables, pero necesito que al capturar el serial del equipo con una lectora de codigo, la macro me verifique si este esta en la tabla de la hoja "Salidas", si el serial esta en dicha tabla, necesito que la macro me traiga la informacion de ese rango de fila, y lo agregue en otra tabla ubicada en la hoja "Entrada", y que adicionalmente agregue en esa misma fila, al lado de la fecha de egreso, la fecha de hoy (ingreso) con su hora (de la misma manera en que ya lo hace). Al terminar de exportar la informacion, debera arrojarme un mensaje indicandome la ubicacion y numero de baul. Despues de este procedimiento, debe ir nuevamente a la celda "Serial de equipo", para capturar si fuera el caso el proximo serial. Pero si el serial del equipo no esta en la tabla "Salidas", la macro debera pedirme que ingrese el serial de inventario de dicho equipo en la hoja "Reg. Entrada", y despues agregar esta informacion (los dos seriales) en la tabla de la hoja "Entradas". Seria algo asi como en la imagen. Anexo mi archivo para mayor informacion. Entradas y salidas de equipos - Version muestra.xlsm Les agradezco de antemano por la ayuda que me puedan prestar Entradas y salidas de equipos - Version muestra.xlsm
    • Entonces dentro de la macro, modifica para que sea una columna completa, además indicarte que esto es lo que pasa cuando un usuario no sube una muestra en Excel tal cual en su estructura, así que en futuras consultas ya sabes La opción de @John Jairo V también es buena alternativa   Saludos a ambos!
    • ¡Hola, @Leonardo Briceño! Es claro que con la macro de evento proporcionada por Gerson (un saludo) puedes realizar el cambio de minúsculas a mayúsculas.  Te doy otra alternativa más sencilla que quizá te pueda servir:  Usar fuente tipo versalitas.  Estas fuentes siempre usan mayúsculas en su esencia, así que te evitas la macro.  Si gustas verifica sobre ellas para aplicarlas en tu archivo.  ¡Bendiciones!
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy