Pergunte aqui
1

Bloquear célula

perguntadas 2020-05-02 12:31:51 +0200

imagem do gravatar de Amaral

updated 2020-06-03 23:42:18 +0200

imagem do gravatar de Schiavinatto

Tenho dois arquivos distintos Alunos.xls e Dados.ods. Crei uma macro na no arquivo Dados.ods para lançar informações em Alunos.xls. Através dessa macro, almejo desabilitar determinado campo para edição. Estou utilizando o comando abaixo.

oDoc.Sheets.getByName("Planilha1").getCellByPosition(3, 6).CellProtection.IsLocked = True

oDoc faz refência a Alunos.xls que é aberta no início da macro. Eu consigo lançar as informações mas não consigo bloquear essa célula para edição. Eu consigo desbloquear e bloquear a aba, mas a célula não.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

Ola @Amaral, mantenha a célula protegida, com a proteção da planilha a célula ficara protegida. Para a alteração na macro você desprotege a planilha faz a alteração e protege novamente.

-

Já pensou em Alunos.xls tem dados vinculados com Dados.ods, assim quando alterar Dados e salvar na abertura de Alunos os dados são atualizados.

De mais detalhes, ou exemplos dos arquivos, fica mais fácil palpitar......

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-05-02 13:09:23 +0200 )editar

Eu estou pesquisando e achei algo em: https://ask.libreoffice.org/en/questi... Nessa macro ele nomeia a célula que deverá ser bloqueada como objeto. Estou tentando compreender. Os dados não estão vinculados.

imagem do gravatar de AmaralAmaral ( 2020-05-02 13:54:26 +0200 )editar

A macro da resposta do link acima esta protegendo a Planilha e não a célula especifica, que esta selecionada como protegida em Formatar células / Protegido.

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-05-02 14:41:05 +0200 )editar

@Amaral, veja a alternativa com dados vinculados.

teste

altere de ods para zip e descompacte.

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-05-02 14:55:51 +0200 )editar

Obrigado pela ajuda.

imagem do gravatar de AmaralAmaral ( 2020-05-02 15:39:22 +0200 )editar

1 Resposta

0

respondidas 2020-05-02 15:09:05 +0200

imagem do gravatar de Amaral

updated 2020-05-05 05:04:50 +0200

Achei uma possível solução.

Sub BloquearCelula

Dim oDoc, Celula, Bloquear As Object

oDoc = ThisComponent

oDoc.Sheets.getByName("Planilha1").UnProtect("")

       Celula = oDoc.Sheets.getByName("Planilha1").getCellByPosition(4, 6)
       Bloquear = Celula.CellProtection         
       Bloquear.IsLocked = True
       Celula.CellProtection = Bloquear
    oDoc.Sheets.getByName("Planilha1").Protect("")

End Sub

Obs.: tem que bloquear a aba para que funcione a proteção na célula.

Pesquisei em diversas páginas e todas remetiam para utilizar um objeto. Adaptei de: https://ask.libreoffice.org/en/questi... e https://forum.openoffice.org/en/forum...

editar assinalar como ofensivo Excluir Link mais

Comentários

@Amaral, não consegui fazer funcionar, por gentileza, poste um exemplo de uso. Grato.

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-05-02 15:45:13 +0200 )editar

Essa macro ela deixa a célula D5 editável. Os demais campos, que estão protegidos para edição, permanecem inalterados. Para que essa macro funcione basta proteger a planilha.

imagem do gravatar de AmaralAmaral ( 2020-05-03 03:04:39 +0200 )editar

( É a célula D7 ) ------ Quando tenho uma planilha só para consulta a deixo protegida, e as alterações faço por macro que: (1) desprotege, (2) faz alterações/inclusões e(3) protege novamente. E a macro deve estar em uma biblioteca diferente da standard para poder receber senha de acesso. Assim para dificultar o acesso a Senha.

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-05-03 04:04:48 +0200 )editar

Uso esse procedimento:

Sub DesprotegerAtualizarProteger
oPlan = "Planilha1" : oSenha = ""
ThisComponent.Sheets.getByName( oPlan ).Unprotect( oSenha )
 Call MacroAtualizar
ThisComponent.Sheets.getByName( oPlan ).Protect( oSenha )
End Sub



Sub MacroAtualizar
rotina..........
End Sub
imagem do gravatar de SchiavinattoSchiavinatto ( 2020-05-03 04:49:48 +0200 )editar

Também procedo dessa forma, porém essa planilha é encaminhada para escolas. Eu trabalho muito com Excel e macros quase sempre dão problemas devido as versões diferente. Para reduzir esse tipo de problema eu crio planilhas onde só podem ser editados determinados campos. estou aprendendo muito com o libre mas nas escolas não é um programa de fácil aceitação.

imagem do gravatar de AmaralAmaral ( 2020-05-05 05:10:00 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2020-05-02 12:31:51 +0200

Lidas: 25 vezes

Última atualização: May 05