Incompatibilidad de DLLTCAST.DLL y Office 2003

04/09/2007 - 20:01 por jsilva69 | Informe spam
Amigos:

Durante mucho tiempo use la rutina de conversion de numeros a letras
mediante la libreria DLLTCAST.DLL (originalmente para Office95/97),
inclusive hasta la version de OfficeXP. Sin embargo, ya no funciona
mas en Office2003. Es una lastima porque es realmente cómoda...
Hay alguna libreria equivalente para Office2003? Digo, sin tener que
recurrir al codigo VBA de "enletras"...

Gracias desde ya!

Julio.

Preguntas similare

Leer las respuestas

#1 Xavier Budet Graco
04/09/2007 - 20:07 | Informe spam
Hola "jsilva69", yo diría que no. Es una pregunta muy frecuente la de convertir números a letras y siempre ofrecen como solución código VBA.

Saludos,

Xavier

Quitar MAC para contestar. Gracias.

"jsilva69" escribió en el mensaje news:
Amigos:

Durante mucho tiempo use la rutina de conversion de numeros a letras
mediante la libreria DLLTCAST.DLL (originalmente para Office95/97),
inclusive hasta la version de OfficeXP. Sin embargo, ya no funciona
mas en Office2003. Es una lastima porque es realmente cómoda...
Hay alguna libreria equivalente para Office2003? Digo, sin tener que
recurrir al codigo VBA de "enletras"...

Gracias desde ya!

Julio.
Respuesta Responder a este mensaje
#2 jsilva69
04/09/2007 - 21:28 | Informe spam
Ok... entonces, aca va mi aporte...

uso:

=num2car(num,dec)

donde num es un numero real y dec es un byte(0..255) que representa la
cantidad de decimales.

Function num2car(num As Double, dec As Byte) As String

Dim PEnt As Long
Dim PDec As Double

Dim txtPEnt As String
Dim txtPDec As String
Dim n2c As String

PEnt = CLng(Int(num))
PDec = (num - PEnt) * (10 ^ dec)

txtPEnt = RTrim(num2str(PEnt))
txtPDec = Format(PDec, String(dec, "0"))

n2c = IIf(Left(txtPEnt, 4) = "MIL ", "UN ", _
IIf(txtPEnt = "MIL", "UN ", "")) & _
txtPEnt & " CON " & _
txtPDec & "/1" & String(dec, "0")

num2car = n2c

End Function

Function num2str(mynum As Long) As String

Dim texto As String
Dim cifra As Long

texto = String(255, 0)
cifra = CLng(Int(mynum))

Call Recibo(cifra, texto)

texto = RTrim(texto)
texto = LTrim(texto)

texto = Replace(texto, Chr(0), Chr(32))
texto = Replace(texto, "tas", "tos")

texto = UCase(texto)

num2str = texto

End Function

Sub Recibo(c As Long, t As String)

t = Letras(c)

End Sub

Private Function Letras(Valor) As String

Select Case Int(Valor)
Case 0:
Letras = "CERO"
Case 1:
Letras = "UN"
Case 2:
Letras = "DOS"
Case 3:
Letras = "TRES"
Case 4:
Letras = "CUATRO"
Case 5:
Letras = "CINCO"
Case 6:
Letras = "SEIS"
Case 7:
Letras = "SIETE"
Case 8:
Letras = "OCHO"
Case 9:
Letras = "NUEVE"
Case 10:
Letras = "DIEZ"
Case 11:
Letras = "ONCE"
Case 12:
Letras = "DOCE"
Case 13:
Letras = "TRECE"
Case 14:
Letras = "CATORCE"
Case 15:
Letras = "QUINCE"
Case Is < 20:
Letras = "DIECI" & Letras(Valor - 10)
Case 20:
Letras = "VEINTE"
Case Is < 30:
Letras = "VEINTI" & Letras(Valor - 20)
Case 30:
Letras = "TREINTA"
Case 40:
Letras = "CUARENTA"
Case 50:
Letras = "CINCUENTA"
Case 60:
Letras = "SESENTA"
Case 70:
Letras = "SETENTA"
Case 80:
Letras = "OCHENTA"
Case 90:
Letras = "NOVENTA"
Case Is < 100:
Letras = Letras(Int(Valor \ 10) * 10) & " Y " & Letras(Valor
Mod 10)
Case 100:
Letras = "CIEN"
Case Is < 200:
Letras = "CIENTO " & Letras(Valor - 100)
Case 200, 300, 400, 600, 800:
Letras = Letras(Int(Valor \ 100)) & "CIENTOS"
Case 500:
Letras = "QUINIENTOS"
Case 700:
Letras = "SETECIENTOS"
Case 900:
Letras = "NOVECIENTOS"
Case Is < 1000:
Letras = Letras(Int(Valor \ 100) * 100) & " " & Letras(Valor
Mod 100)
Case 1000:
Letras = "MIL"
Case Is < 2000:
Letras = "MIL " & Letras(Valor Mod 1000)
Case Is < 1000000:
Letras = Letras(Int(Valor \ 1000)) & " MIL"
If Valor Mod 1000 Then
Letras = Letras & " " & Letras(Valor Mod 1000)
End If
Case 1000000:
Letras = "MILLON "
Case Is < 2000000:
Letras = "UN MILLON " & Letras(Valor Mod 1000000)
Case Is < 1000000000000#:
Letras = Letras(Int(Valor / 1000000)) & "MILLONES "
If (Valor - Int(Valor / 1000000) * 1000000) Then
Letras = Letras & Letras(Valor - Int(Valor / 1000000) *
1000000)
End If
Case 1000000000000#:
Letras = "UN BILLON "
Case Is < 2000000000000#:
Letras = "UN BILLON " & Letras(Valor - Int(Valor /
1000000000000#) * 1000000000000#)
Case Else:
Letras = Letras(Int(Valor / 1000000000000#)) & " BILLONES "
If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) Then
Letras = Letras & " " & Letras(Valor - Int(Valor /
1000000000000#) * 1000000000000#)
End If
End Select

End Function


On 4 sep, 15:07, "Xavier Budet Graco" wrote:
Hola "jsilva69", yo diría que no. Es una pregunta muy frecuente la de convertir números a letras y siempre ofrecen como solución código VBA.

Saludos,

Xavier

Quitar MAC para contestar. Gracias.

"jsilva69" escribió en el mensajenews:
Amigos:

Durante mucho tiempo use la rutina de conversion de numeros a letras
mediante la libreria DLLTCAST.DLL (originalmente para Office95/97),
inclusive hasta la version de OfficeXP. Sin embargo, ya no funciona
mas en Office2003. Es una lastima porque es realmente cómoda...
Hay alguna libreria equivalente para Office2003? Digo, sin tener que
recurrir al codigo VBA de "enletras"...

Gracias desde ya!

Julio.
Respuesta Responder a este mensaje
#3 Héctor Miguel
09/09/2007 - 09:55 | Informe spam
hola, Julio !

dale una revisada a la propuesta que aportas [trae algunas... *lagunas*] :-(

saludos,
hector.
Respuesta Responder a este mensaje
#4 jsilva69
11/09/2007 - 15:18 | Informe spam
Hola, HM!

la verdad, hice copy&paste de una las las formulas que andan dando
vueltas por ahi... lo que (despues) vi es que:

Case Is < 1000000000000#:
Letras = Letras(Int(Valor / 1000000)) & "MILLONES "
If (Valor - Int(Valor / 1000000) * 1000000) Then
Letras = Letras & Letras(Valor - Int(Valor / 1000000) *
1000000)

falta un " " antes de "MILLONES"

Aparte, ahora que veo... es un "hibrido" de una formula que habia
armado para la version DLLTCAST... pero bueno, la voy a tener que
depurar...

Gracias por todo!

Julio.



On 9 sep, 04:55, "Héctor Miguel"
wrote:
hola, Julio !

dale una revisada a la propuesta que aportas [trae algunas... *lagunas*] :-(

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida