Tentei usar os macros que possui que seleciona o texto para letras maiúsculas para nome próprio porém ela ao selecionar um número de colunas para acionar o macro ele tranca informando que a propriedade ou método não encontrado: getByIndex. Segue modelo de macro:
> " Sub ConverterLetrasIniciais
> oDoc = thisComponent
> oSelec = oDoc.getCurrentSelection()
> ' celula ou intervalo selecionado ?
> If oSelec.supportsService("com.sun.star.text.TextDocument")
> Then Exit Sub
> ' cria e exibe uma caixa de diálogo
> DialogLibraries.loadLibrary ( "Tabela" )
> oDialogo = CreateUNODialog (DialogLibraries.Tabela.Dialog1)
> iResp = oDialogo.execute()
> ' usuário cancelou ? encerra
> If iResp = 0 Then
> Exit Sub
> End If
> ' verifica estado da caixa de seleção
> bMinusc = False
> If oDialogo.Model.CheckBox1.State = 1 Then
> bMinusc = True
> End If
> ' verifica estado do botão de opção
> bNome = False
> If oDialogo.Model.OptionButton2.State = 1
> Then
> bNome = True
> End If
> ' inicia a conversão
> LetrasIniciaisMaiusculas (oSelec, bNome, bMinusc) End Sub"
.
> "Sub LetrasIniciaisMaiusculas (oSel As
> Object, bNomeProprio As Boolean,
> bMinuscula As Boolean)
> ' O texto da seleção
> **oTexto = oSel.getByIndex(0)**
> sConteudo = oTexto.getString()
> ' percorre as células selecionadas
>
> If bMinuscula Then
> ' converte as letras em minúsculas
> sConteudo = LCase(sConteudo)
> End If
> If bNomeProprio Then
> ' converte no estilo de nomes próprios
> novoCont = LetrasNomeProprio(sConteudo)
> Else
> ' converte todas as iniciais para maiúsculas
> novoCont = TodasIniciaisMaiusculas(sConteudo)
> End If
> ' atualiza o conteúdo do texto da tabela
> oTexto.setString(novoCont)
End Sub"
.
> "Function TodasIniciaisMaiusculas
> (sCadeia) As String
> vPalavras = Split (sCadeia)
> For i = 0 To UBound(vPalavras)
> letra = UCase(Left$(vPalavras(i),1))
> Mid(vPalavras(i), 1, 1, letra)
> Next i
> TodasIniciaisMaiusculas = Join(vPalavras()) End Function"
>
> "_____________________________________________ Function LetrasNomeProprio (sCadeia)
> As String
> vExcluir = Array("e","da","de","do","das","dos")
> vPalavras = Split (sCadeia)
> For i = 0 To UBound(vPalavras)
> bExcluir = False
> For j = 0 To UBound(vExcluir)
> If LCase(vPalavras(i)) = vExcluir(j) Then
> vPalavras(i) = LCase(vPalavras(i))
> bExcluir = True
> Exit For
> End If
> Next j
> If Not bExcluir Then
> letra = UCase(Left$(vPalavras(i),1))
> Mid(vPalavras(i), 1, 1, letra)
> End If
> Next i
> LetrasNomeProprio = Join(vPalavras()) End Function""