Pergunte aqui
1

Macro para Proteger planilha... sem senha

perguntadas 2016-02-24 04:51:43 +0200

imagem do gravatar de Orlando

updated 2016-04-17 02:59:06 +0200

imagem do gravatar de Grafeno

Olá!

Gostaria de gravar uma macro para proteger minha planilha sem senha.

Até consigo gravar e salvar o código dessa macro.

Acontece que, ao executar o código, só aparece a caixa de mensagem Proteger planilha, mas não completa a ação...

sub Proteger_sem_senha
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Protect"
args1(0).Value = true

dispatcher.executeDispatch(document, ".uno:Protect", "", 0, args1())

end sub

Seguem imagens do código gravado pela macro e da mensagem Proteger planilha:

[Código macro] http://imgur.com/u9cvVwD

[Proteger planilha] http://imgur.com/d317l8M

Grato pela atenção!

Orlando Souza

8)

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

As imagens somente são aceitas no Ask quando o usuário alcança um certo karma (pontuação). Então, você poderia editar sua pergunta e fornecer mais detalhes do seu projeto?

imagem do gravatar de GrafenoGrafeno ( 2016-02-27 16:33:08 +0200 )editar

Você também pode colocar o código da sua macro na sua pergunta, selecionar ele e clicar no botão "10010010" que vai formatar o código direitinho. Experimente. Não precisa da imagem 1.

imagem do gravatar de OlivierOlivier ( 2016-02-29 20:08:21 +0200 )editar

1 Resposta

2

respondidas 2016-03-01 18:28:11 +0200

imagem do gravatar de Grafeno

Este parece um daqueles casos em que uma das limitações do Gravador de Macro (experimental) do LibreOffice impede que se chegue ao resultado esperado.

Pesquisando na internet também não encontrei referências sobre como proteger/desproteger diretamente pelo Dispatcher sem abrir o dialogo "Proteger planilha..."

Mas felizmente a API UNO do LibreOffice oferece dois métodos bem simples para se alcançar o seu objetivo.


Cole as macros abaixo na IDE Basic do seu arquivo e substitua as ocorrências de "Planilha1" pelo nome da sua planilha:

' Macro para proteger a Planilha
Sub ProtegerPlan
Dim oDoc As Object, oPlan As Object

    oDoc = ThisComponent
    oPlan = oDoc.Sheets.getByName( "Planilha1" )

    ' Proteger a planilha sem senha
    oPlan.Protect( "" )
End Sub

' Macro para Desproteger a planilha
Sub DesprotegerPlan
Dim oDoc As Object, oPlan As Object

    oDoc = ThisComponent
    oPlan = oDoc.Sheets.getByName( "Planilha1" )

    ' Deproteger a planilha sem senha
    oPlan.Unprotect( "" )
End Sub


Atte,
Grafeno

editar assinalar como ofensivo Excluir Link mais

Comentários

\o/

obrigado, Grafeno!!

Funcionou direitinho

abçs.

Orlando

:D

imagem do gravatar de OrlandoOrlando ( 2016-03-01 20:33:43 +0200 )editar

Muito bom,@Orlando! Muito obrigado pelo retorno (feedback). Mas vc poderia clicar no " √ " da resposta para marcar como "resposta correta" para facilitar para quem estiver procurando algo parecido. Abrs.

imagem do gravatar de GrafenoGrafeno ( 2016-03-02 18:00:37 +0200 )editar

Olá, Grafeno! Poderia dar uma olhada no tópico que segue? A dúvida é quase a mesma que você apresentou solução, mas existe a necessidade de proteger sem permitir "Selecionar células protegidas".

https://ask.libreoffice.org/pt-br/que...

Grato.

imagem do gravatar de Carlos2Carlos2 ( 2016-09-05 20:02:32 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2016-02-24 04:15:47 +0200

Lidas: 351 vezes

Última atualização: Mar 01 '16