Olá
eu ainda naum tenho o windev para testar.. e na vesão express naum tem essa opção, eu sei que da para converter funções escrita em VB para W entaum a função que escreve por extenso ta ai: ( EM VB6)
São duas funções... a de cima precisa da de baixo para funcionar.... caso não conseguir traduzir... copie e cole no VB6 e transforme uma dll ai vc consegue com certeza.
Davi
'Retorna frase extenso de um número (PORTUGUES)
'vgValor = numero para extenso, vgNaoMoeda = flag moeda/não moeda, vgNomeSing e vgNomePlur = Nome da moeda (sing/plural)
Public Function Extenso(ByVal vgValor As Currency, Optional ByVal vgNaoMoeda As Boolean, Optional ByVal vgNomeSing As String, Optional ByVal vgNomePlur As String) As String
Dim vgNum As String 'versão string do número
Dim vgCents As Integer 'porção decimal do número
Dim vgBuffer As String 'string em criação
Dim vgTemp As String 'retorno da função Conv3()
Dim VgTamS As Variant 'tamanho do arranjo
Dim VgTamP As Variant 'tamanho do arranjo
VgTamS = Array("", " Mil", " Milhão", " Bilhão", " Trilhão")
VgTamP = Array("", " Mil", " Milhões", " Bilhões", " Trilhões")
If vgNomeSing = "" Then vgNomeSing = "Real"
If vgNomePlur = "" Then vgNomePlur = "Reais"
If vgNaoMoeda Then
vgValor = Int(vgValor)
End If
'salva porção decimal como inteiro arredondado em 2 casas
vgCents = Int((vgValor - Int(vgValor)) * 100)
'descarta centavos
vgValor = Int(vgValor)
vgNum = CStr(vgValor)
'adiciona zeros à frente para forçar tam múltiplo de 3
If (Len(vgNum) Mod 3) > 0 Then
vgNum = String$(3 - (Len(vgNum) Mod 3), "0") + vgNum
End If
'traduz cada grupo de 3 dÃgitos
While Len(vgNum)
'traduz parte esquerda
vgTemp = Conv3(CInt(Left$(vgNum, 3)), vgBuffer)
If Len(vgTemp) Then
If CInt(Left$(vgNum, 3)) > 1 Then
vgBuffer = vgBuffer + vgTemp + VgTamP((Len(vgNum) - 1) \ 3) + " "
Else
vgBuffer = vgBuffer + vgTemp + VgTamS((Len(vgNum) - 1) \ 3) + " "
End If
End If
'remove os 3 characteres
If Len(vgNum) > 3 Then
vgNum = Mid$(vgNum, 4)
'em caso de 1100=>1900 ou 1001=>1099 tem que colocar o "e"
If vgNum > 0 And (vgNum Mod 100 = 0 Or vgNum < 100) Then vgBuffer = vgBuffer & "e "
Else
vgNum = ""
End If
Wend
If Not vgNaoMoeda Then
If vgValor > 1 Then
vgBuffer = vgBuffer + vgNomePlur
ElseIf vgValor <> 0 Then
vgBuffer = vgBuffer + vgNomeSing
End If
If vgCents > 0 Then
If vgValor > 0 Then vgBuffer = vgBuffer + " e "
vgBuffer = vgBuffer + Conv3(vgCents, vgBuffer) + IIf(vgCents = 1, " Centavo", " Centavos")
End If
End If
Extenso = vgBuffer
End Function
'converte número de 1,2 e 3 dÃgitos em texto (PORTUGUES)
Private Function Conv3(vgTres As Integer, Optional ExpAnt As String) As String
Dim vgBuffer As String 'string a montar
Dim vgUnid As Variant 'unidades
Dim vgTens As Variant 'dezenas
Dim vgTeens As Variant 'centenas
Dim vgCem As Variant 'centenas
'enche arranjo de vetores
vgUnid = Array("", "Um", "Dois", "Três", "Quatro", "Cinco", "Seis", "Sete", "Oito", "Nove")
vgTens = Array("", "Dez", "Vinte", "Trinta", "Quarenta", "Cinquenta", "Sessenta", "Setenta", "Oitenta", "Noventa")
vgTeens = Array("Dez", "Onze", "Doze", "Treze", "Quatorze", "Quinze", "Dezesseis", "Dezessete", "Dezoito", "Dezenove")
vgCem = Array("Cem", "Cento", "Duzentos", "Trezentos", "Quatrocentos", "Quinhentos", "Seiscentos", "Setecentos", "Oitocentos", "Novecentos")
If vgTres > 99 Then
If vgTres = 100 Then
vgBuffer = vgCem(vgTres \ 100 - 1)
Else
vgBuffer = vgCem(vgTres \ 100)
End If
Else
vgBuffer = vgUnid(vgTres \ 100)
End If
'remove primeiro digito (se >= 100).
vgTres = vgTres Mod 100
'se número de vinte em diante
If vgTres > 19 Then
'pega string para segundo dÃgito
If (vgTres Mod 10) >= 0 And Len(vgBuffer) > 0 Then
vgBuffer = vgBuffer + " e "
End If
vgBuffer = vgBuffer + vgTens(vgTres \ 10)
End If
'adiciona conector
If ((Len(vgBuffer) And (vgTres Mod 10) > 0) Or (vgTres = 10 And Len(ExpAnt$ + vgBuffer$) > 0)) And Right(vgBuffer, 3) <> " e " And (Right(ExpAnt, 3) <> " e " Or Len(vgBuffer) > 0) Then
vgBuffer = vgBuffer + " e "
End If
'menor que 20...
If vgTres > 9 And vgTres < 20 Then
'pega string baseada no último dÃgito
vgBuffer = vgBuffer + vgTeens(vgTres Mod 10)
Else
'se não, pega string do último dÃgito
vgBuffer = vgBuffer + vgUnid(vgTres Mod 10)
End If
Conv3 = vgBuffer
End Function