Ola Jorge, usei a função NEXTENSO desenvolvida por: Noelson Alves Duarte
e Gustavo Buzzatti Pacheco em
'https://wiki.documentfoundation.org/Extensions/Projects/NumExtenso/pt-br
para não dar confusão alterei para DEXTENSO para datas.
Copiar as Macros abaixo para sua planilha:
------------------------------------------------------------------------
REM ***** BASIC *****
REM ***** BASIC *****
'https://wiki.documentfoundation.org/Extensions/Projects/NumExtenso/pt-br
'desenvolvida por: Noelson Alves Duarte e Gustavo Buzzatti Pacheco
'adaptada para data por: Gilberto Schiavinatto
function DExtenso(byval dValor as double) as string
' nextenso=extenso(dvalor,"reais", "real")
dextenso=extenso(dvalor,"", "")
end Function
function Extenso(ByVal Valor As Double, ByVal MoedaPlural As String,
ByVal MoedaSingular As String) As String
Dim StrValor As String, Negativo As Boolean
Dim Buf As String, Parcial As Integer
Dim Temp as string
Dim Posicao As Integer, Unidades
Dim Dezenas, Centenas, PotenciasSingular
Dim PotenciasPlural
Negativo = (Valor < 0)
Valor = Abs((Valor))
If Valor Then
Unidades = Array(vbNullString, "um", "dois", "três", "quatro",
"cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze",
"treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito",
"dezenove")
Dezenas = Array(vbNullString, vbNullString, "vinte", "trinta",
"quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa")
Centenas = Array(vbNullString, "cento", "duzentos", "trezentos",
"quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos",
"novecentos")
PotenciasSingular = Array(vbNullString, " mil", " milhão", "
bilhão", " trilhão", " quatrilhão")
PotenciasPlural = Array(vbNullString, " mil", " milhões", "
bilhões", " trilhões", " quatrilhões")
StrValor = Left(Format(Valor, String(18, "0") & ".000"), 18)
For Posicao = 1 To 18 Step 3
Parcial = Val(Mid(StrValor, Posicao, 3))
If Parcial Then
If Parcial = 1 Then
Buf = "um" & PotenciasSingular((18 - Posicao) \ 3)
ElseIf Parcial = 100 Then
Buf = "cem" & PotenciasSingular((18 - Posicao) \ 3)
Else
Buf = Centenas(Parcial \ 100)
Parcial = Parcial Mod 100
If Parcial <> 0 And Buf <> vbNullString Then
Buf = Buf & " e "
End If
If Parcial < 20 Then
Buf = Buf & Unidades(Parcial)
Else
Buf = Buf & Dezenas(Parcial \ 10)
Parcial = Parcial Mod 10
If Parcial <> 0 And Buf <> vbNullString Then
Buf = Buf & " e "
End If
Buf = Buf & Unidades(Parcial)
End If
Buf = Buf & PotenciasPlural((18 - Posicao) \ 3)
End If
If Buf <> vbNullString Then
If Temp <> vbNullString Then
Parcial = Val(Mid(StrValor, Posicao, 3))
If Posicao = 16 And (Parcial < 100 Or _
(Parcial Mod 100) = 0) Then
Temp = Temp & " e "
Else
Temp = Temp & ", "
End If
End If
Temp = Temp & Buf
End If
End If
Next
If Temp <> vbNullString Then
If Negativo Then
Temp = "menos " & Temp
End If
If Int(Valor) = 1 Then
Temp = Temp & " " & MoedaSingular
Else
Temp = Temp & " " & MoedaPlural
End If
End If
Parcial = Int((Valor - Int(Valor)) * 100 + 0.1)
If Parcial Then
' Buf = ExtensoCentavos(Parcial, "centavos", "centavo")
Buf = ExtensoCentavos(Parcial, "", "")
If Temp <> vbNullString Then
Temp = Temp & " e "
End If
Temp = Temp & Buf
End If
End If
Extenso = Temp
End function
function ExtensoCentavos(ByVal Valor As Double, ByVal MoedaPlural As
String, ByVal MoedaSingular As String) As String
Dim StrValor As String, Negativo As Boolean
Dim Buf As String, Parcial As Integer
Dim Temp as string
Dim Posicao As Integer, Unidades
Dim Dezenas, Centenas, PotenciasSingular
Dim PotenciasPlural
Negativo = (Valor < 0)
Valor = Abs((Valor))
If Valor Then
Unidades = Array(vbNullString, "um", "dois", "três", "quatro",
"cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze",
"treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito",
"dezenove")
Dezenas = Array(vbNullString, vbNullString, "vinte", "trinta",
"quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa")
Centenas = Array(vbNullString, "cento", "duzentos", "trezentos",
"quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos",
"novecentos")
PotenciasSingular = Array(vbNullString, " mil", " milhão", "
bilhão", " trilhão", " quatrilhão")
PotenciasPlural = Array(vbNullString, " mil", " milhões", "
bilhões", " trilhões", " quatrilhões")
StrValor = Left(Format(Valor, String(18, "0") & ".000"), 18)
For Posicao = 1 To 18 Step 3
Parcial = Val(Mid(StrValor, Posicao, 3))
If Parcial Then
If Parcial = 1 Then
Buf = "um" & PotenciasSingular((18 - Posicao) \ 3)
ElseIf Parcial = 100 Then
Buf = "cem" & PotenciasSingular((18 - Posicao) \ 3)
Else
Buf = Centenas(Parcial \ 100)
Parcial = Parcial Mod 100
If Parcial <> 0 And Buf <> vbNullString Then
Buf = Buf & " e "
End If
If Parcial < 20 Then
Buf = Buf & Unidades(Parcial)
Else
Buf = Buf & Dezenas(Parcial \ 10)
Parcial = Parcial Mod 10
If Parcial <> 0 And Buf <> vbNullString Then
Buf = Buf & " e "
End If
Buf = Buf & Unidades(Parcial)
End If
Buf = Buf & PotenciasPlural((18 - Posicao) \ 3)
End If
If Buf <> vbNullString Then
If Temp <> vbNullString Then
Parcial = Val(Mid(StrValor, Posicao, 3))
If Posicao = 16 And (Parcial < 100 Or _
(Parcial Mod 100) = 0) Then
Temp = Temp & " e "
Else
Temp = Temp & ", "
End If
End If
Temp = Temp & Buf
End If
End If
Next
If Temp <> vbNullString Then
If Negativo Then
Temp = "menos " & Temp
End If
If Int(Valor) = 1 Then
Temp = Temp & " " & MoedaSingular
Else
Temp = Temp & " " & MoedaPlural
End If
End If
Parcial = Int((Valor - Int(Valor)) * 100 + 0.1)
If Parcial Then
Buf = Extenso(Parcial, "centavos", "centavo")
If Temp <> vbNullString Then
Temp = Temp & " e "
End If
Temp = Temp & Buf
End If
End If
ExtensoCentavos = Temp
End function
------------------------------------------------------------------------
Só alterei as linhas sobre Real / Reais / Centavo e Centavos para não
mostrar.
considerando a data na célula*E4**
*
a formula é esta:
*
**=DEXTENSO(DIA(E4))&" de
"&ESCOLHER(MÊS(E4);"janeiro";"fevereiro";"março";"abril";"maio";"junho";"julho";"agosto";"setembro";"outubro";"novembro";"dezembro")&"
de "&DEXTENSO(ANO(E4))*
Só não consegui ser na mesma célula digitada.
Em 18/09/2018 14:36, Jorge Fernandes escreveu:
Boa tarde
Como faz pra data xx/××/×××× ser convertida imediatamente em extenso ( dois
de maio de mil novecentos e setenta e seis)?
Pode ser em outra planilha no mesmo arquivo, sem problema.
Obrigado
--
Você está recebendo e-mails da lista usuarios@pt-br.libreoffice.org
# Informações sobre os comandos disponíveis (em inglês):
mande e-mail vazio para usuarios+unsubscribe@pt-br.libreoffice.org
# Cancelar sua assinatura: mande e-mail vazio para:
usuarios+unsubscribe@pt-br.libreoffice.org
# Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/usuarios/
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.