Autor Tema: ayuda en word  (Leído 2133 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Tito

  • Sv Member
  • ***
  • Mensajes: 171
ayuda en word
« : julio 11, 2006, 05:22:19 pm »
Quisiera pedirles ayuda en lo siguiente, encontre un macro para word que convierte numeros a letras el problemas es que al digitar una cantidad por ej.: 1234 al convetirla lo hace de la siguiente manera: (UN MIL DOSCIENTOS TREINTA Y CUATRO PESOS 00/100 M.N.)queria pedirles que si alguien seria capaz de modificar el codigo del macro, para que al hacer la conversion la muestre sin lo de "pesos" ni lo de "00/100 M.N.." ni los parentesis. Les agradecere su ayuda
este es el codigo del macro:

Código: [Seleccionar]
Option Explicit
''Mauricio Baeza     mbs@inbox.net
''Samuel Monjaras    smonjaraz@hotmail.com
''Enero-97
''http://www.vbalym.netfirms.com
''Argumentos:
''Numero = Valor que deseamos convertir en texto
''Estilo = Formato de salida
''              1 = MAYUSCULAS
''              2 = minusculas
''              3 = Tipo Titulo
''Los valores negativos los convierte a positivos
''El valor minimo en 0, el valor maximo es  9,999,999,999,999.99

Public Sub Numero_A_Letras()
Dim strValor As String
Dim strRes As String
Dim dblValor As Double
Dim Estilo As Byte

  strValor = Trim(Selection.Text)
  If Len(strValor) = 0 Then
    strValor = Trim(InputBox("Introduce el valor que deseas convertir", _
                                "Numeros a letras"))
  End If
  If strValor = "" Or Not IsNumeric(strValor) Then
    MsgBox "Debes de proporcionar un número valido", _
           vbInformation, _
           "Números a letras"
  Else
    strRes = Trim(InputBox("¿Que estilo deseas?" & vbCrLf & vbCrLf & _
                "1 = MAYUSCULAS" & vbCrLf & _
                "2 = minusculas" & vbCrLf & _
                "3 = Tipo Titulo", "Numeros a letras", "1"))
    If Len(strRes) = 0 Then
      MsgBox "Cancelaste la macro", vbInformation, "Números a letras"
    Else
      Estilo = Val(strRes)
      If Estilo < 1 Or Estilo > 3 Then Estilo = 1
      dblValor = CDbl(strValor)
      Selection.Text = Format(dblValor, "$ #,##0.00 ") & NumLetras(dblValor, Estilo)
    End If
  End If

End Sub

Private Function NumLetras(ByVal Numero As Double, ByVal Estilo As Integer) As String
  Dim NumTmp As String
  Dim c01 As Integer
  Dim c02 As Integer
  Dim pos As Integer
  Dim dig As Integer
  Dim cen As Integer
  Dim dec As Integer
  Dim uni As Integer
  Dim letra1 As String
  Dim letra2 As String
  Dim letra3 As String
  Dim Leyenda As String
  Dim Leyenda1 As String
  Dim TFNumero As String
       
  If Numero < 0 Then Numero = Abs(Numero)

  NumTmp = Format(Numero, "000000000000000.00")        ''''''''''''''''Le da un formato fijo
  c01 = 1
  pos = 1
  TFNumero = ""
  ''''''''''''''''Para extraer tres digitos cada vez
  Do While c01 <= 5
    c02 = 1
    Do While c02 <= 3
      ''''''''''''''''Extrae un digito cada vez de izquierda a derecha
      dig = Val(Mid(NumTmp, pos, 1))
      Select Case c02
        Case 1: cen = dig
        Case 2: dec = dig
        Case 3: uni = dig
      End Select
      c02 = c02 + 1
      pos = pos + 1
    Loop
    letra3 = Centena(uni, dec, cen)
    letra2 = Decena(uni, dec)
    letra1 = Unidad(uni, dec)
           
    Select Case c01
      Case 1
        If cen + dec + uni = 1 Then
          Leyenda = "Billon "
        ElseIf cen + dec + uni > 1 Then
          Leyenda = "Billones "
        End If
      Case 2
        If cen + dec + uni >= 1 And Val(Mid(NumTmp, 7, 3)) = 0 Then
          Leyenda = "Mil Millones "
        ElseIf cen + dec + uni >= 1 Then
          Leyenda = "Mil "
        End If
      Case 3
        If cen + dec = 0 And uni = 1 Then
          Leyenda = "Millon "
        ElseIf cen > 0 Or dec > 0 Or uni > 1 Then
          Leyenda = "Millones "
        End If
      Case 4
        If cen + dec + uni >= 1 Then
          Leyenda = "Mil "
        End If
      Case 5
        If cen + dec + uni >= 1 Then
          Leyenda = ""
        End If
      End Select
           
      c01 = c01 + 1
      TFNumero = TFNumero + letra3 + letra2 + letra1 + Leyenda
     
      Leyenda = ""
      letra1 = ""
      letra2 = ""
      letra3 = ""
  Loop
       
  If Val(NumTmp) = 0 Or Val(NumTmp) < 1 Then
    Leyenda1 = "Cero Pesos "
  ElseIf Val(NumTmp) = 1 Or Val(NumTmp) < 2 Then
    Leyenda1 = "Peso "
  ElseIf Val(Mid(NumTmp, 4, 12)) = 0 Or Val(Mid(NumTmp, 10, 6)) = 0 Then
    Leyenda1 = "de Pesos "
  Else
    Leyenda1 = "Pesos "
  End If
 
  TFNumero = TFNumero & Leyenda1
  Select Case Estilo
    Case 1
      TFNumero = StrConv(TFNumero, vbUpperCase)
    Case 2
      TFNumero = StrConv(TFNumero, vbLowerCase)
    Case Else
      TFNumero = StrConv(TFNumero, vbProperCase)
  End Select
 
  TFNumero = "(" & TFNumero & Mid(NumTmp, 17) & "/100 M.N.)"
           
  NumLetras = TFNumero
   
End Function

Private Function Centena(ByVal uni As Integer, ByVal dec As Integer, _
                         ByVal cen As Integer) As String
Dim cTexto As String

  Select Case cen
    Case 1
      If dec + uni = 0 Then
        cTexto = "cien "
      Else
        cTexto = "ciento "
      End If
    Case 2: cTexto = "doscientos "
    Case 3: cTexto = "trescientos "
    Case 4: cTexto = "cuatrocientos "
    Case 5: cTexto = "quinientos "
    Case 6: cTexto = "seiscientos "
    Case 7: cTexto = "setecientos "
    Case 8: cTexto = "ochocientos "
    Case 9: cTexto = "novecientos "
    Case Else: cTexto = ""
  End Select
  Centena = cTexto
   
End Function

Private Function Decena(ByVal uni As Integer, ByVal dec As Integer) As String
Dim cTexto As String
 
  Select Case dec
    Case 1:
      Select Case uni
        Case 0: cTexto = "diez "
        Case 1: cTexto = "once "
        Case 2: cTexto = "doce "
        Case 3: cTexto = "trece "
        Case 4: cTexto = "catorce "
        Case 5: cTexto = "quince "
        Case 6 To 9: cTexto = "dieci"
      End Select
    Case 2:
      If uni = 0 Then
        cTexto = "veinte "
      ElseIf uni > 0 Then
        cTexto = "veinti"
      End If
    Case 3: cTexto = "treinta "
    Case 4: cTexto = "cuarenta "
    Case 5: cTexto = "cincuenta "
    Case 6: cTexto = "sesenta "
    Case 7: cTexto = "setenta "
    Case 8: cTexto = "ochenta "
    Case 9: cTexto = "noventa "
    Case Else: cTexto = ""
  End Select
 
  If uni > 0 And dec > 2 Then cTexto = cTexto + "y "
   
  Decena = cTexto
 
End Function

Private Function Unidad(ByVal uni As Integer, ByVal dec As Integer) As String
Dim cTexto As String
 
  If dec <> 1 Then
    Select Case uni
      Case 1: cTexto = "un "
      Case 2: cTexto = "dos "
      Case 3: cTexto = "tres "
      Case 4: cTexto = "cuatro "
      Case 5: cTexto = "cinco "
    End Select
  End If
  Select Case uni
    Case 6: cTexto = "seis "
    Case 7: cTexto = "siete "
    Case 8: cTexto = "ocho "
    Case 9: cTexto = "nueve "
  End Select
 
  Unidad = cTexto

End Function
« Última Modificación: julio 11, 2006, 05:25:29 pm por Tito »

Desconectado sortux

  • -^- Elite Silver -^-
  • Sv Full Member
  • *
  • Mensajes: 854
  • Si kieres Paz, prepárate para la Guerra!!!
    • \"
Re: ayuda en word
« Respuesta #1 : julio 11, 2006, 05:31:58 pm »
pues yo creo ke solo seria de kitarle esto:
Citar
If Val(NumTmp) = 0 Or Val(NumTmp) < 1 Then
    Leyenda1 = "Cero Pesos "
  ElseIf Val(NumTmp) = 1 Or Val(NumTmp) < 2 Then
    Leyenda1 = "Peso "
  ElseIf Val(Mid(NumTmp, 4, 12)) = 0 Or Val(Mid(NumTmp, 10, 6)) = 0 Then
    Leyenda1 = "de Pesos "
  Else
    Leyenda1 = "Pesos "
  End If

y esto:
Citar
TFNumero = "(" & TFNumero & Mid(NumTmp, 17) & "/100 M.N.)"

solo lo ke esta en rojo!!
There are only 10 types people in the world: Those who understand binary and those who don't

[img alt="some alt text"]http://ubuntucounter.geekosophical.net/img/ubuntu-user2.php?user=4815

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: ayuda en word
« Respuesta #2 : julio 11, 2006, 06:58:07 pm »
pues yo creo ke solo seria de kitarle esto:
Citar
If Val(NumTmp) = 0 Or Val(NumTmp) < 1 Then
    Leyenda1 = "Cero Pesos "
  ElseIf Val(NumTmp) = 1 Or Val(NumTmp) < 2 Then
    Leyenda1 = "Peso "
  ElseIf Val(Mid(NumTmp, 4, 12)) = 0 Or Val(Mid(NumTmp, 10, 6)) = 0 Then
    Leyenda1 = "de Pesos "
  Else
    Leyenda1 = "Pesos "
  End If

y esto:
Citar
TFNumero = "(" & TFNumero & Mid(NumTmp, 17) & "/100 M.N.)"

solo lo ke esta en rojo!!


Eso es correcto!!!

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: ayuda en word
« Respuesta #3 : julio 11, 2006, 07:19:05 pm »
hey que chivo va vos este codigo me va a servir  :yahoo: para trasladarlo a otros lenguajes  :sur:

Desconectado Tito

  • Sv Member
  • ***
  • Mensajes: 171
Re: ayuda en word
« Respuesta #4 : julio 12, 2006, 06:30:41 pm »
Muchas gracias por su ayuda, el codigo ya arregaldo me sera de mucha utilidad

Desconectado stuartlittle18

  • MiembrosReales
  • *
  • Mensajes: 20
  • Resurgiendo de las cenizas
Re: ayuda en word
« Respuesta #5 : noviembre 29, 2006, 02:15:26 pm »
 :D Hey este codigo esta bien excelente!! Me va a servir bastante!!  :mosh: :rck: :evil:
Cuando sepas una cosa sostén que la sabes; cuando no la sepas, confiesa que no la sabes. En eso está la característica del conocimiento y de la humilda! By lrivas®

Desconectado arie

  • Sv Member
  • ***
  • Mensajes: 146
  • DiOs Te AmA!!!
Re: ayuda en word
« Respuesta #6 : diciembre 22, 2006, 10:04:01 am »
disculpen la ignorancia... dond se pone est codigo para ke funcione.. ahh y dond se compila..?¿?   :-/
lA mUeRtE eStA tAn SeGuRa De Su ViCtOrIa Ke NoS dA tOdA uNa ViDa PaRa kE la DiSfRuTeMoS

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: ayuda en word
« Respuesta #7 : diciembre 22, 2006, 10:05:27 am »
El codigo es de Visual Basic