Saltar para: Post [1], Pesquisa e Arquivos [2]

Code Snippets Blog

Pequenas rotinas em vba, vbscript e outras linguagens. Noticias sobre informática, workshops, e outras coisas relacionadas com novas tecnologias.

Code Snippets Blog

Pequenas rotinas em vba, vbscript e outras linguagens. Noticias sobre informática, workshops, e outras coisas relacionadas com novas tecnologias.

03
Jan08

Excel - Converter um numero em extenso

Fiz este exemplo  em 2002 para ser usado no preenchimento de letras e cheques.

Presentemente a rotina pode ser usada em várias situações inclusive pode ser adaptada para funcionar em documentos do Word.

Converte numeros até 999.999.999,99 em extenso, parametrizável para outras moedas além do euro.

 

 

Adaptação para o Word: Duas macros que em conjunto com o código do extenso para o Excel permite traduzir um numérico para extenso, todas as macros podem ser colocadas no normal.dot dentro de um modulo, associe uma tecla de atalho para as macros.

Para traduzir basta seleccionar o valor e executar uma das macros, o valor originalmente pode estar assim 1.200,00 ou assim 1200,00 que será a mesma coisa, terá que levar em conta que as macros tomam como separador decimal a virgula, eliminando todos os pontos encontrados.
Esta irá substituir no documento o valor seleccionado pelo seu extenso:

Sub TraduzParaExtenso_Substituir()
Dim num As DoubleDim anterior
    On Error GoTo Erro
    anterior = Selection.Text
    With Selection.Find
           .Text = "."           .Replacement.Text = ""           .Execute Replace:=wdReplaceAll, Forward:=True    End With    num = Format(Selection.Text, "#.00")
    If IsNumeric(num) = True Then Selection.Text = xExtenso(num) & " "    Exit SubErro:
    Selection.Text = anterior
    MsgBox Err.Description
End Sub

 

Esta macro adiciona o extenso ao documento logo a seguir ao valor p.ex: 1.200,00 (mil duzentos euro(s) )

Sub TraduzParaExtenso_Inserir()
Dim num As DoubleDim anterior
      On Error GoTo Erro
      anterior = Selection.Text
      With Selection.Find
             .Text = "."             .Replacement.Text = ""             .Execute Replace:=wdReplaceAll, Forward:=True      End With      num = Format(Selection.Text, "#.00")
      If IsNumeric(num) = True Then                   Selection.Text = anterior
                   Selection.MoveRight Unit:=wdCharacter, Count:=2                   Selection.TypeText Text:=" (" & xExtenso(num) & ") "      End If      Exit SubErro:
      Selection.Text = anterior
      MsgBox Err.Description
End Sub 

Fonte: http://jjoao2k.no.sapo.pt