Depois que eu inseri este código para ocultar as planilhas se o usuário entrar com "desabilitar macros", não consegui mais salvar o arquivo.
Já fiz alguns testes e já sei que o que está impedindo de abrir a janela salvar como, só não sei como revolver.
Alguém pode me ajudar?
Option Explicit
'Nome da planilha que deve ser visualizada em caso de abrir com as macros desativadas - e esconder em caso de macros ativadas
Const PlanilhaMensagem As String = "Sheet1"
'Controle da rotina que esconde as planilhas ao salvar (MacrosAtivas_Salvar)
Private bolEmSave As Boolean
'Planilha ativa - MacrosAtivas_Salvar
Dim wa As Worksheet
Public Sub MacrosAtivas_Open()
'Esconde a planilha de abertura e mostra as demais .....
Dim w As Worksheet
'Desabilita a atualização da tela enquanto executa
Application.ScreenUpdating = False
'Desabilita a execução de eventos enquanto executa
Application.EnableEvents = False
'Loop para mostrar todas todas as planilhas da pasta exceto a planiha de abertura....
For Each w In ActiveWorkbook.Worksheets
If w.Name <> PlanilhaMensagem Then
w.Visible = xlSheetVisible
End If
Next
'Esconde a planilha de abertura....
'Utilizando "xlSheetVeryHidden" desabilita-se a possibilidade de reexibir a planilha pela interface do Excel
ActiveWorkbook.Worksheets(PlanilhaMensagem).Visible = xlSheetVeryHidden
'Habilita atualização da tela
Application.ScreenUpdating = True
'Habilita a execução de eventos
Application.EnableEvents = True
'Define o Workbook como salvo pois as alterações de visível/invisível são entendidas como alterações a salvar
ActiveWorkbook.Saved = True
dados.Show
dados.Data.Text = Date
End Sub
Public Sub MacrosAtivas_Salvar(ByRef Cancel As Boolean)
'Esconde todas as planilhas menos a da abertura
Dim w As Worksheet
'Se já está executando, sai habilitando salvar a planilha
If bolEmSave Then
Cancel = False
Exit Sub
End If
bolEmSave = True
Cancel = True
Application.ScreenUpdating = False
Application.EnableEvents = False
'Seta a planilha ativa para retornar o foco depois....
Set wa = ActiveWorkbook.ActiveSheet
'Esconde todas as planilhas menos a de abertura
ActiveWorkbook.Worksheets(PlanilhaMensagem).Visible = xlSheetVisible
For Each w In ActiveWorkbook.Worksheets
If w.Name <> PlanilhaMensagem Then
w.Visible = xlSheetVeryHidden
End If
Next
'Invoca novamente "salvar a pasta"....
'A execução recursiva é controlada pela variável bolEmSave,impedindo a reexecução contínua dessa rotina
ActiveWorkbook.Save
'Inverter a situação... Mostra todas as planilhas exceto a planilha de abertura
For Each w In ActiveWorkbook.Worksheets
If w.Name <> PlanilhaMensagem Then
w.Visible = xlSheetVisible
End If
Next
ActiveWorkbook.Worksheets(PlanilhaMensagem).Visible = xlSheetVeryHidden
'Habilita atualização da tela e de eventos
Application.ScreenUpdating = True
Application.EnableEvents = True
'Retorna o foco para a planilha ativa no momento de salvar
wa.Activate
bolEmSave = False
'Define o Workbook como salvo pois as alterações de visível/invisível são entendidas como alterações a salvar
ActiveWorkbook.Saved = True
End Sub
Pergunta
Erika Tímpano
Pessoal,
Depois que eu inseri este código para ocultar as planilhas se o usuário entrar com "desabilitar macros", não consegui mais salvar o arquivo.
Já fiz alguns testes e já sei que o que está impedindo de abrir a janela salvar como, só não sei como revolver.
Alguém pode me ajudar?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.