Necesito saber como hago para justificar texto a ambas
margenes en un campo memo de access-97, solo permite
justificar a la izquierda, derecha o centro pero no a
ambos lados,
gracias por su ayuda

RESPONDE EDUARDO OLAZ
=====================

La función TextoAParrafos, que desarrollé hace 3 años, te devuelve una
cadena con líneas del mismo nº de caracteres.

(El efecto de justificación sólo funciona con fuentes mono-espaciadas, por
ejemplo Courier New )

'************************************************************************
    '   TextoAParrafos(Texto,Parrafo) --> String
    '   Función desarrollada por Eduardo Olaz
    '   Primera versión 4/11/99
    '   Última revisión 4/11/99

'************************************************************************
    ' parámetros:   Texto (por valor, string) Texto que se quiere convertir
    '               Parrafo (por valor, long) Longitud máxima del párrafo
    ' Valor devuelto (String) Cadena transformada
    ' Método:   Recursivo
    ' Funciones auxiliares: SubParrafo(Texto,Parrafo)   --> String
    '                       PosicionCorte(Texto,Parrafo)--> Long
    ' Devuelve la cadena Texto transformada
    ' en párrafos de longitud igual a Parrafo
    ' salvo que se encuentre un salto de línea ó retorno de carro
    ' que hará que ese párrafo sea más corto.
    ' Para igualar los párrafos inserta espacios junto a cada espacio
    ' hasta completar una línea de longitud constante
    ' esta función se usa de forma recursiva cortando
    ' la cadena Texto hasta que el último trozo es
    ' de longitud <= que Parrafo

Public Function TextoAParrafos(ByVal Texto As String, _
                                ByVal Parrafo As Long) _
                                As String

    Dim lngLongitudTexto As Long
    Dim lngPuntoCorte As Long       'punto por donde cortar la cadena
    Dim strTextoIzquierda As String 'cadena a la izquierda del corte
    Dim strTextoDerecha As String   'cadena a la derecha del corte
    Dim strCaracter As String * 1
    lngLongitudTexto = Len(Texto)

    If lngLongitudTexto <= Parrafo Then
        TextoAParrafos = Texto
    Else
        lngPuntoCorte = PosicionCorte(Texto, Parrafo)
        strTextoIzquierda = RTrim(Left$(Texto, lngPuntoCorte))
        strCaracter = Mid$(Texto, lngPuntoCorte)
        If (strCaracter = vbNewLine Or strCaracter = vbLf) Then
            ' Se ha detectado final de párrafo
            strTextoDerecha = Mid$(Texto, lngPuntoCorte + 1)
            TextoAParrafos = strTextoIzquierda & _
               TextoAParrafos(LTrim$(strTextoDerecha), Parrafo)
        Else
            ' Añadir espacios en los huecos hasta longitud de parrafo
            strTextoIzquierda = SubParrafo(strTextoIzquierda, Parrafo)
            strTextoDerecha = Mid$(Texto, lngPuntoCorte + 1)
            TextoAParrafos = strTextoIzquierda & vbCrLf & _
            TextoAParrafos(LTrim$(strTextoDerecha), Parrafo)
        End If

    End If
End Function

'************************************************************************
    '   PosicionCorte(Texto,Parrafo)  --> Long
    '   Función desarrollada por Eduardo Olaz
    '   Primera versión 4/11/99
    '   Última revisión 4/11/99

'************************************************************************
    ' parámetros:   Texto (por valor, string) del que obtener pto. de corte
    '               Parrafo (por valor, long) Longitud máxima del párrafo
    ' Valor devuelto (Long) Punto por el que cortar la cadena Texto
    ' Método:   Iterativo

Public Function PosicionCorte(ByVal Texto As String, ByVal Parrafo As Long)
As Long
    Dim lngLongitudTexto As Long
    Dim lngContador As Long
    Dim strCaracter As String * 1
    Dim strIzquierda As String

    lngLongitudTexto = Len(Texto)
    ' Recorre carácter a carácter la cadena
    ' hasta la posición Parrafo.
    ' esta búscqueda se interrumpe si encuentra una carácter
    ' de retorno de carro o salto de línea o si se acaba la cadena
    Do While lngContador < Parrafo And _
             lngContador <= lngLongitudTexto _
             And strCaracter <> vbNewLine _
             And strCaracter <> vbLf
        lngContador = lngContador + 1
        strCaracter = Mid$(Texto, lngContador, 1)
    Loop
    If lngContador < Parrafo Then
        PosicionCorte = lngContador
    Else
        Select Case strCaracter
        Case vbNewLine, vbLf
            PosicionCorte = lngContador
        ' Si encuentra un espacio en blanco o un tabulador
        ' en la última posición recorre la cadena hacia la izquierda
        ' hasta encontrar un carácter
        Case " ", vbTab
            Do While (strCaracter = " " Or strCaracter = vbTab)
                lngContador = lngContador - 1
                strCaracter = Mid$(Texto, lngContador, 1)
            Loop
            PosicionCorte = lngContador + 1
        Case Else
            ' Busca un espacio en blanco o tabulador a la izquierda
            ' para efectuar el corte en un blanco
            PosicionCorte = lngContador
            Do While (strCaracter <> " " _
                     And strCaracter <> vbTab _
                     And lngContador > 1)
               lngContador = lngContador - 1
               strCaracter = Mid$(Texto, lngContador, 1)
            Loop
            'Extrae la cadena sin blancos a la derecha
            strIzquierda = RTrim(Left$(Texto, lngContador))
            PosicionCorte = Len(strIzquierda)
        End Select
    End If
End Function
Public Function SubParrafo(ByVal Texto As String, _
                                                 ByVal Parrafo As Long) _
                                                As String
    ' Devuelve una cadena contenida en la parte izquierda de Texto
    ' de longitud menor ó igual que el valor de parrafo
    Dim lngContador As Long
    Dim lngLongitudTexto As Long
    Dim lngBlancos As Long
    Dim lngBlancosPorEspacio As Long
    Dim lngEspacios As Long
    Dim lngPosicion As Long
    Dim strCaracter As String * 1
    Dim strLadoIzquierdo As String
    Dim strLadoDerecho As String
    Dim lngEspacioActual As Long
    Dim astrEspacios() As String

    lngLongitudTexto = Len(Texto)
    If lngLongitudTexto = Parrafo Then
        SubParrafo = Texto
    Else
        lngBlancos = Parrafo - lngLongitudTexto
        ' Averiguar el nº de espacios en blanco que hay en texto
        For lngPosicion = 1 To lngLongitudTexto
            strCaracter = Mid$(Texto, lngPosicion, 1)
            If strCaracter = " " Then
                lngEspacios = lngEspacios + 1
            End If
        Next lngPosicion
        If lngEspacios = 0 Then
            SubParrafo = Texto
        Else
            ' Uso la matriz dinámica astrEspacios para almacenar
            ' los blancos a añadir
            ReDim astrEspacios(1 To lngEspacios)
            lngBlancosPorEspacio = lngBlancos \ lngEspacios
            For lngContador = 1 To lngEspacios
                astrEspacios(lngContador) = Space(lngBlancosPorEspacio)
            Next lngContador
            For lngContador = 1  _
                    To lngBlancos - lngBlancosPorEspacio * lngEspacios
                astrEspacios(lngContador) = astrEspacios(lngContador) & " "
            Next lngContador
            For lngPosicion = 1 To lngLongitudTexto
                strCaracter = Mid$(Texto, lngPosicion, 1)
                strLadoIzquierdo = strLadoIzquierdo & strCaracter
                If strCaracter = " " Then
                    lngEspacioActual = lngEspacioActual + 1
                    strLadoIzquierdo = strLadoIzquierdo _
                                     & astrEspacios(lngEspacioActual)
                End If
            Next lngPosicion
            SubParrafo = strLadoIzquierdo
        End If
    End If

End Function
_____________________________________

    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)