Bom dia,
A tempos atrás, baixei uma macro, mas precisamente uma extensão criada por NOELSON A. DUARTE, para transformar a 1º letra de cada palavra em maiúscula, mas este macro ou extensão somente é para uso nas planilhas…
Gostaria de saber se tem como alterar o comando para que seja usado para o writer…
segue em anexo a estrutura da extensão…
Sub ConverterLetrasIniciais
oDoc = thisComponent
oSelec = oDoc.getCurrentSelection()
' celula ou intervalo selecionado ?
If (Not oSelec.supportsService("com.sun.star.sheet.SheetCellRange")) Then
MsgBox "Selecione a célula ou o intervalo de células!", 48, "Erro"
Exit Sub
End If
' cria e exibe uma caixa de diálogo
DialogLibraries.loadLibrary ( "TamLetra" )
oDialogo = CreateUNODialog (DialogLibraries.TamLetra.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 Variant, bNomeProprio As Boolean, bMinuscula As Boolean)
' obtem limites da seleção
vEnd = oSel.getRangeAddress()
nrLinhas = vEnd.EndRow - vEnd.StartRow
nrColunas = vEnd.EndColumn - vEnd.StartColumn
tipoTexto = com.sun.star.table.CellContentType.TEXT
' percorre as células selecionadas
For i = 0 To nrLinhas
For j = 0 To nrColunas
oCelula = oSel.getCellByPosition(j, i)
' apenas células com texto nos interessa
If oCelula.getType() = tipoTexto Then
sConteudo = oCelula.getString()
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 da célula
oCelula.setString(novoCont)
End If
Next j
Next i
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
Se tiver uma idéia para alterar este macro serei grato…
se tem com ser uma texto selecionado …