Como remover linhas em branco, usando macro, em uma planilha protegida?

Tenho uma planilha com cadastro de clientes, por exemplo. As informações dos clientes são inseridas e/ou excluídas nas linhas da planilha. Porém, às vezes sobram linhas em branco, vazias, e que são desnecessárias. Por isso, para deixar a planilha organizada preciso excluir as linhas em branco, mas, são muitas. Como faço isso usando macro? Lembrando que a planilha está protegida.

Obrigado.

@RobsonT, tem que Desproteger a planilha, e depois proteger…

'================================================|
Sub RemoverLinhasEmBranco
' observação: Remove Linhas Em Branco de toda planilha ativa
'================================================|
' Macro que remove linhas em branco em uma planilha          '
' Desenvolvida incialmente por Noelson Duarte em 02/06/2005. '
' Alterada por Francival Lima em 01/03/2008                  '
'---------------------------------------------------------'
            Call DesprotegerPlanilha "Planilha", "Senha"
Dim oDoc As Object
Dim oControlador As Object
Dim oPlan As Object
Dim oCursor As Object
Dim vEnd As Object
Dim oExt As Object
Dim oLinhas As Object
Dim nTotal As integer 'As Object
Dim nFlags As Boolean 'As Object
oDoc = thisComponent
 oControlador =oDoc.getCurrentController()
'-----Retorna o controlador do Documento aberto.
oPlan = oControlador.getActiveSheet()
'-----Retorna a planilha ativa.
oCursor = oPlan.createCursor()
'-----Cria um cursor
oCursor.gotoEndOfUsedArea(False)
vEnd = oCursor.getRangeAddress()
oExt = oPlan.getCellRangeByPosition(0,0,vEnd.EndColumn,vEnd.EndRow)
oLinhas = oExt.getRows()
nTotal = oLinhas.getCount() - 1
nFlags = com.sun.star.sheet.CellFlags.VALUE OR _
com.sun.star.sheet.CellFlags.DATETIME OR _
com.sun.star.sheet.CellFlags.STRING OR _
com.sun.star.sheet.CellFlags.ANNOTATION OR _
com.sun.star.sheet.CellFlags.FORMULA
For i = nTotal To 0 Step -1
   oExtLin = oPlan.getCellRangeByPosition(0, i, vEnd.EndColumn, i)
   oCelulasNaoVazias = oExtLin.queryContentCells(nFlags)
   If oCelulasNaoVazias.getCount() = 0 Then
      oLinhas.removeByIndex(i, 1)
   End If
Next i
            Call ProtegerPlanilha "Planilha", "Senha"
End Sub

Incluida no inicio Desproteger e no final Proteger

'================================================|
Sub DesprotegerPlanilha ( xPlanilha As String, xsenha As string )
'================================================|
	Dim oDoc As Object, oPlan As Object
    Dim Senha as String
        oDoc = ThisComponent
        oPlan = oDoc.Sheets.getByName( xPlanilha )
        Senha = xsenha            '<= AQUI É A SENHA........
        ' Despoteger a planilha
        oPlan.Unprotect(Senha)
End Sub

'================================================|
Sub ProtegerPlanilha ( xPlanilha As String, xsenha As string )
'================================================|
	Dim oDoc As Object, oPlan As Object
    Dim Senha as String
        oDoc = ThisComponent
        oPlan = oDoc.Sheets.getByName( xPlanilha )
        Senha = xsenha            '<= AQUI É A SENHA........
        ' Proteger a planilha
        oPlan.Protect(Senha)
End Sub

ATENÇÂO:: Para dar mais detalhes a sua pergunta, use Descrição da imagem na pergunta ou Descrição da imagem abaixo. Não use Adicionar resposta para comentário. Grato.

Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.
.

@schiavinatto muito obrigado pela ajuda. Não sei usar o VBA. Você pode me explicar como fazer gravando macro pelo calc normalmente usando teclado e mouse?

@RobsonT, veja aqui:

https://www.schiavinatto.com/mundolibre/como-incluir-macro-em-arquivo-calc..html

ATENÇÃO: O arquivo tem que ser do Calc (ods)

E caso queira colocar um Botão: https://www.schiavinatto.com/mundolibre/como-inserir-botao-para-acionar-macro..html

OU criar um Menu: https://www.schiavinatto.com/mundolibre/criando-menu-personalizado_lm20.html

Olá prezado @schiavinatto.
Eu só consegui incluir a macro e executá-la com a planilha desprotegida. Como faço para unir as três ações na mesma macro, a saber: 1) desproteger a planilha; 2) excluir as linhas em branco e em seguida proteger a planilha novamente, finalizando assim o processo. Como faço isso?

@RobsonT, na macro RemoverLinhasEmBranco tem duas chamadas de submacros:

Call DesprotegerPlanilha "Planilha", "Senha"

e

Call ProtegerPlanilha "Planilha", "Senha"

Alatere “Planilha” pelo nome de sua planilha

e “Senha” pela senha.

Eu fiz isso: no campo “Planilha” eu digitei o nome da planilha, entre aspas e no campo “Senha” digitei a senha, entre aspas, mas não deu certo. Quando executo a ação surge na tela de edição da macro com a mensagem: “Erro de execução do BASIC. Procedimento Sub ou procedimento de Function não definido”.

Ola @RobsonT, é possível me enviar cópia da planilha, sigilo garantido.

Contato: https://wiki.documentfoundation.org/User:Schiavinatto

Arquivo exemplo com macro alterada.

Olá caro Schiavinatto.
Já encaminhei minha planilha para teu email.