none
Excel. Como criar um código no VBA para que a planilha abra somente com as macros?

    Question

  • Tenho apenas uma dúvida decisiva para que eu possa concluir minha planilha, esta é uma que eu criei para me ajudar no meu trabalho e tem algumas informações, por isso através do VBA (que eu não conheço muito) coloquei usuário e senha nela e algumas outras funções e também algumas células dela também são bloqueadas com senha, o problema é que para funcionar este macro o Excel tem que estar como... 

     Habilitar todas as macros (não recomendado, códigos possivelmente...)
     Confiar no acesso ao modelo de objeto do projeto no VBA

    ... no Desenvolvedor/Segurança de Macro.

    E alguns computadores da empresa estão desabilitados estas funções, e também alguém pode desabilitar, e assim tendo acesso a planilha, sendo que ela não vai pedir mais senha nem ter a integração que eu preciso.

    O que eu devo fazer? Ou teria como então eu bloquear toda a planilha de forma que se a pessoa abrir sem as macros ela não poderá editá-la, e assim criar um código no VBA para que desbloqueie algumas células da planilha sendo assim, somente quando a planilha abrir com a macro ela poderá ser editada?

    Sunday, July 21, 2013 6:50 PM

Answers

  • Eu quando pretendo que habilitem as macros faço o seguinte:

    1-Crio uma folha de rosto onde explicitamente meto um texto bem visivel a informar para ligar as macros, que irá ser escondido pelo evento open do livro, ou seja só irá mostrar esse texto se as macros estiverem inativas.

    2-Escondo todas as outras folha com a propriedade veryhiden, só é possível usando VBA, e claro, só é possível mostrá-las com VBA.

    3-Uso os eventos do livro: BeforeSave e AfterSave para ao guardar o livro as folhas fiquem sempre escondidas

    Exemplo:

    Private Sub Workbook_Open()
        'colocar aqui o procedimento para login
        
        Rosto.Visible = xlSheetHidden
        Folha1.Visible = xlSheetVisible
    End Sub
    
    Private Sub Workbook_AfterSave(ByVal Success As Boolean)
        Rosto.Visible = xlSheetHidden
        Folha1.Visible = xlSheetVisible
        Me.Saved = True
    End Sub
    
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Folha1.Visible = xlVisible
        Folha1.Visible = xlSheetVeryHidden
    End Sub
    
    Por fim, em todos os PCs onde este documento ficar, meto-o numa pasta que esteja incluida na lista de localizações fidedignas em opções / centro de fidedignidade
    Monday, July 22, 2013 10:46 PM
  • Como o Nando disse, alguém com um pouco de conhecimento em VBA será capaz de visualizar as planilhas que estão ocultas. Como sempre dizem: "se você não pode abrir mão da segurança dos dados, então o Excel talvez não seja a ferramenta correta pra você".

    Só uma correção do código:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Rosto.Visible = xlVisible
        Folha1.Visible = xlSheetVeryHidden
    End Sub
    



    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    Tuesday, July 23, 2013 9:52 PM
    Moderator

All replies

  • Eu quando pretendo que habilitem as macros faço o seguinte:

    1-Crio uma folha de rosto onde explicitamente meto um texto bem visivel a informar para ligar as macros, que irá ser escondido pelo evento open do livro, ou seja só irá mostrar esse texto se as macros estiverem inativas.

    2-Escondo todas as outras folha com a propriedade veryhiden, só é possível usando VBA, e claro, só é possível mostrá-las com VBA.

    3-Uso os eventos do livro: BeforeSave e AfterSave para ao guardar o livro as folhas fiquem sempre escondidas

    Exemplo:

    Private Sub Workbook_Open()
        'colocar aqui o procedimento para login
        
        Rosto.Visible = xlSheetHidden
        Folha1.Visible = xlSheetVisible
    End Sub
    
    Private Sub Workbook_AfterSave(ByVal Success As Boolean)
        Rosto.Visible = xlSheetHidden
        Folha1.Visible = xlSheetVisible
        Me.Saved = True
    End Sub
    
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Folha1.Visible = xlVisible
        Folha1.Visible = xlSheetVeryHidden
    End Sub
    
    Por fim, em todos os PCs onde este documento ficar, meto-o numa pasta que esteja incluida na lista de localizações fidedignas em opções / centro de fidedignidade
    Monday, July 22, 2013 10:46 PM
  • Como o Nando disse, alguém com um pouco de conhecimento em VBA será capaz de visualizar as planilhas que estão ocultas. Como sempre dizem: "se você não pode abrir mão da segurança dos dados, então o Excel talvez não seja a ferramenta correta pra você".

    Só uma correção do código:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Rosto.Visible = xlVisible
        Folha1.Visible = xlSheetVeryHidden
    End Sub
    



    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    Tuesday, July 23, 2013 9:52 PM
    Moderator