none
Limitar código a uma planilha RRS feed

  • Pergunta

  • Bom dia Pessoal,

    Eu estou usando um código que garimpei na internet para ocultar os menus e os botões de Fechar/Minimizar.

    O problema é que quando abro outra planilha o código é aplicado a ela também, por isso eu gostaria de saber se tem como limitar o código somente a planilha onde ele foi inserido deixando as outras planilhas normais.

    Segue o código:

    'OCULTA OS BOTÕES MINIMIZAR / MAXIMIZAR E FECHAR DA BARRA DO EXCEL
    
    'Sem as declarações abaixo as macros para retirar e repor os botões não funcionará
    Declare Function FindWindow32 Lib "user32" Alias "FindWindowA" _
            (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Integer
    Declare Function GetWindowLong32 Lib "user32" Alias "GetWindowLongA" _
            (ByVal hWnd As Integer, ByVal nIndex As Integer) As Long
    Declare Function SetWindowLong32 Lib "user32" Alias "SetWindowLongA" _
            (ByVal hWnd As Integer, ByVal nIndex As Integer, _
            ByVal dwNewLong As Long) As Long
            
    Global Const GWL_STYLE = (-16)
    Global Const WS_SYSMENU = &H80000
    
    Sub ocultar_tudo()
    
    'Menu superior
    Application.ExecuteExcel4Macro "show.toolbar(""ribbon"",false)"
    'barra de Fórmulas
    Application.DisplayFormulaBar = False
    'barra de status
    Application.DisplayStatusBar = False
    
    
    'Cabeçalhos
    ActiveWindow.DisplayHeadings = False
    'Guias da planilha
    ActiveWindow.DisplayWorkbookTabs = False
    'Linhas de grade
    ActiveWindow.DisplayGridlines = False
    'Barras horozontais
    ActiveWindow.DisplayHorizontalScrollBar = False
    'barras verticais
    ActiveWindow.DisplayVerticalScrollBar = False
    
     With Application
            .WindowState = xlMaximized
            '.Top = 200
            '.Left = 400
            '.Height = 350
            '.Width = 300
        End With
            
        Application.ScreenUpdating = False
    
        Dim WindowStyle As Long
        Dim hWnd As Integer
        Dim WindowName As String
        Dim Result As Variant
    
        WindowName = Application.Caption
        hWnd = FindWindow32(0&, ByVal WindowName)
        WindowStyle = GetWindowLong32(hWnd, GWL_STYLE)
        WindowStyle = WindowStyle And (Not WS_SYSMENU)
        Result = SetWindowLong32(hWnd, GWL_STYLE, WindowStyle)
    
        'Força a barra de títulos a se atualizar, Ocultando os Botões
        Application.Caption = "Planilha XYZ"
        ActiveWindow.Caption = " Empresa S/A "
            
    End Sub
    
    Sub mostrar_tudo()
    
    'Menu superior
    Application.ExecuteExcel4Macro "show.toolbar(""ribbon"",true)"
    'barra de Fórmulas
    Application.DisplayFormulaBar = True
    'barra de status
    Application.DisplayStatusBar = True
    
    
    'Cabeçalhos
    ActiveWindow.DisplayHeadings = True
    'Guias da planilha
    ActiveWindow.DisplayWorkbookTabs = True
    'Linhas de grade
    ActiveWindow.DisplayGridlines = True
    'Barras horozontais
    ActiveWindow.DisplayHorizontalScrollBar = True
    'barras verticais
    ActiveWindow.DisplayVerticalScrollBar = True
    
    With Application
            .WindowState = xlMaximized
         End With
     
        Application.ScreenUpdating = True
        Dim WindowStyle As Long
        Dim hWnd As Integer
        Dim WindowName As String
        Dim Result As Variant
    
        WindowName = Application.Caption
        hWnd = FindWindow32(0&, ByVal WindowName)
        WindowStyle = GetWindowLong32(hWnd, GWL_STYLE)
        WindowStyle = WindowStyle Or WS_SYSMENU
        Result = SetWindowLong32(hWnd, GWL_STYLE, WindowStyle)
        
        'Força a barra de títulos a se atualizar, Retornando os Botões
        Application.Caption = "Planilha XYZ"
        ActiveWindow.Caption = " Empresa S/A "
            
     
    End Sub

    Desde já, agradeço a atenção,

    Att, Carlos Brito

    terça-feira, 5 de dezembro de 2017 11:34

Respostas

  • Private Sub Workbook_Activate()
    Call ocultar_tudo
    End Sub
    
    Private Sub Workbook_Deactivate()
    Call mostrar_tudo
    End Sub
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 terça-feira, 5 de dezembro de 2017 15:33
    • Marcado como Resposta Carloshvb terça-feira, 5 de dezembro de 2017 18:00
    terça-feira, 5 de dezembro de 2017 15:32

Todas as Respostas

  • Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    'Este procedimento é acionado

    'Quando o formulário é fechado

    'Use-o se a sua pasta possui um formulário

    'E se você quiser que a configuração da planilha

    'Seja alterada sempre que você fechar o formulário Call mostrar_tudo End Sub



    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com


    terça-feira, 5 de dezembro de 2017 12:53
  • Sub Auto_Close()
    'Insira um módulo e coloque este código
    'Este procedimento será acionado quando
    'For fechar a pasta de trabalho    
        Call mostrar_tudo
        ThisWorkbook.Save
    End Sub


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 terça-feira, 5 de dezembro de 2017 13:04
    terça-feira, 5 de dezembro de 2017 13:01
  • Boa tarde Anderson,

    Obrigado pela resposta, mas meu problema não ocorre ao fechar a planilha, para isso o código "mostra_tudo" já está implementado, meu problema é abrir outras planilhas quando a planilha está com o código "ocultar_tudo" ativado. 

    Neste caso, ou quando tenho planilhas já abertas, o código de ocultação é aplicado a todas as planilhas, eu queria saber se tem como limitar a aplicação do código somente a planilha onde ele foi inserido.

    Obrigado

    Att, Carlos

    terça-feira, 5 de dezembro de 2017 15:19
  • Private Sub Workbook_Activate()
    Call ocultar_tudo
    End Sub
    
    Private Sub Workbook_Deactivate()
    Call mostrar_tudo
    End Sub
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 terça-feira, 5 de dezembro de 2017 15:33
    • Marcado como Resposta Carloshvb terça-feira, 5 de dezembro de 2017 18:00
    terça-feira, 5 de dezembro de 2017 15:32

  • A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 terça-feira, 5 de dezembro de 2017 15:37
    terça-feira, 5 de dezembro de 2017 15:37

  • A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 terça-feira, 5 de dezembro de 2017 15:41
    terça-feira, 5 de dezembro de 2017 15:41