Bloquear célula

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.

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…

Eu estou pesquisando e achei algo em:

Nessa macro ele nomeia a célula que deverá ser bloqueada como objeto. Estou tentando compreender. Os dados não estão vinculados.

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.

@Amaral, veja a alternativa com dados vinculados.

teste

altere de ods para zip e descompacte.

Obrigado pela ajuda.

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: Lock cell with macro e [Solved] Turn on/off cell protection using BASIC macro (View topic) • Apache OpenOffice Community Forum

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

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.

( É 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.

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

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.