• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jmaocubo

Mensagem de aviso se Macros desactivados

8 mensagens neste tópico

Olá a todos

Após concluído o trabalho para a empresa, na qual vocês muito me ajudaram, surgiu agora um problema que eu não estava à espera.

Quem tem um conhecimento razoável em excel sabe que tem que activar as macros para que estas funcionem.... o problema é quem não sabe!!! B)

Será possivel fazer uma especie de popup com uma mensagem a avisar que as macros estão desactivadas e poder a partir dessa caixa "popup" activar sendo a escolha "ACTIVAR" e "NÃO ACTIVAR"....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens que ver nos níveis de segurança.

Sim.... no meu os niveis de segurança estão OK para as macros. O grande problema é que a folha de cálculo vai ser usada em "n" computadores que poderão não estar com nivel de segurança que permita activar as macros e claro pode estar a ser usada por alguém que não saiba activar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Sim.... no meu os níveis de segurança estão OK para as macros. O grande problema é que a folha de cálculo vai ser usada em "n" computadores que poderão não estar com nivel de segurança que permita activar as macros e claro pode estar a ser usada por alguém que não saiba activar.

Não sei se é possível fazer o que estás a perguntar. Se calhar é escrever no rodapé do programa (1ª folha) como activar o macro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá a todos

Após concluído o trabalho para a empresa, na qual vocês muito me ajudaram, surgiu agora um problema que eu não estava à espera.

Quem tem um conhecimento razoável em excel sabe que tem que activar as macros para que estas funcionem.... o problema é quem não sabe!!! :)

Será possivel fazer uma especie de popup com uma mensagem a avisar que as macros estão desactivadas e poder a partir dessa caixa "popup" activar sendo a escolha "ACTIVAR" e "NÃO ACTIVAR"....

Bem, desta forma não seria possivel criar nada uma vez que preciso das macros activadas para fazer o acima descrito.

Depois de fazer uma pesquisa intensiva na net cheguei ao seguinte código de um senhor chamado Mark:

Option Explicit

Const WelcomePage = "Macros"

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

'Macro Purpose: Ensure that the macro instruction sheet is saved as the only
'               visible worksheet in the workbook
    Dim ws As Worksheet
    Dim wsActive As Worksheet
    Dim vFilename As Variant
    Dim bSaved As Boolean

    'Turn off screen flashing
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With

    'Record active worksheet
    Set wsActive = ActiveSheet

    'Save workbook directly or prompt for saveas filename
    If SaveAsUI = True Then
        vFilename = Application.GetSaveAsFilename( _
        fileFilter:="Excel Files (*.xls*), *.xls*")
        If CStr(vFilename) = "False" Then
            bSaved = False
        Else
            'Save the workbook using the supplied filename
            Call HideAllSheets
            ThisWorkbook.SaveAs vFilename
            Application.RecentFiles.Add vFilename
            Call ShowAllSheets
            bSaved = True
        End If
    Else
        'Save the workbook
        Call HideAllSheets
        ThisWorkbook.Save
        Call ShowAllSheets
        bSaved = True
    End If

    'Restore file to where user was
    wsActive.Activate

    'Restore screen updates
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    
    'Set application states appropriately
    If bSaved Then
        ThisWorkbook.Saved = True
        Cancel = True
    Else
        Cancel = True
    End If

End Sub

Private Sub Workbook_Open()

'Macro Purpose: Unhide all worksheets since macros are enabled
    Application.ScreenUpdating = False
    Call ShowAllSheets
    Application.ScreenUpdating = True
    ThisWorkbook.Saved = True
End Sub

Private Sub HideAllSheets()

'Macro Purpose: Hide all worksheets except the macro welcome page

    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()

'Macro Purpose: Show all worksheets except the macro welcome page

    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

Ou seja numa folha com o nome de macros coloco uma informação de que é necessário activar as macros e se efectivamente as macros estão desactivadas apenas aparece esta folha com o nome macros e não as restantes.

Quando é activado as macros, a folha macros deixa de aparecer e aparecem as outras

É uma forma de contornar o problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva pessoal, afinal este código tem um problema que não estou a conseguir resolver.

Quando faço gravar como (saveas) e lhe mudo o nome ele dá erro no ponto

  If SaveAsUI = True Then
        vFilename = Application.GetSaveAsFilename( _
        fileFilter:="Excel Files (*.xls*), *.xls*")
        If CStr(vFilename) = "False" Then
            bSaved = False
        Else
            'Save the workbook using the supplied filename
            Call HideAllSheets
            ThisWorkbook.SaveAs vFilename                 ' O ERRO É NESTE PONTO
            Application.RecentFiles.Add vFilename
            Call ShowAllSheets
            bSaved = True

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora