Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Septiembre 12, 2011, 10:00:43 am

Título: Detectar formato desde vb6 en una planilla de Excel
Publicado por: Bazooka en Septiembre 12, 2011, 10:00:43 am
Hola tengo una planilla xls con muchisimos datos ordenados en una sóla columna y los quiero trasladar a una base de datos pero el asunto es que en la misma columna estan el Nombre y la direccion del cliente de esta manera:


Mario Anibal Rosas   Alvear 478


El nombre esta en negrita y en un tamaño mayor pero dentro de la misma celda por lo que debiera tener una funcion que detecte el formato en negrita y lo separe a otra columna!!!

Es posible hacerlo desde VB6 o debiera hacerlo dentro de excel con alguna MACRO??

gracias 1000

Bazooka
Título: Re:Detectar formato desde vb6 en una planilla de Excel
Publicado por: seba123neo en Septiembre 13, 2011, 02:48:44 am
buena pregunta, yo trabaje bastante con VBA desde visual basic, pero no he encontrado nada parecido.

no tenes posibilidad de que ese XLS se exporte bien ?

pero podes probar esto:

How to Search Bold Text (Range) using Excel VBA (http://vbadud.blogspot.com/2008/12/how-to-search-bold-text-range-using.html)

saludos.
Título: Re:Detectar formato desde vb6 en una planilla de Excel
Publicado por: Bazooka en Septiembre 13, 2011, 08:21:58 am
no tenes posibilidad de que ese XLS se exporte bien ?

saludos.

Hola Seba no entiendo que me queres decir con que se exporte bien..
Título: Re:Detectar formato desde vb6 en una planilla de Excel
Publicado por: Bazooka en Septiembre 13, 2011, 09:00:42 am
Seba soy muy malo para el ingles pero ese ejemplo que me pasaste aparentemente sólo busca por celdas el formato o sea si la celda es negrita o no!, no cheque todo el texto DENTRO verdad?
Título: Re:Detectar formato desde vb6 en una planilla de Excel
Publicado por: Lolabyte en Septiembre 15, 2011, 08:07:06 pm
En este post resuelven un problema parecido al tuyo, en una celda hay texto en aleman y texto en ingles, la unica forma de diferenciar es que el texto en aleman esta bold

die Fuβgängerzone,-n –pedestrian zone
erleben-to experience
kräftig - strong

la solucion era hacer una funcion de usuario

Código: [Seleccionar]
Function BoldEnds(r As Range) As Long
    ' returns the character position of the first non-bold character
    ' in the first cell of r
 
    Dim iUB As Long
    Dim iLB As Long
    Dim iMid As Long
 
    With r(1)
        If .HasFormula Or VarType(.Value) <> vbString Then
            BoldEnds = -1
 
        ElseIf IsNull(.Font.Bold) Then  ' some bold, some not
            iUB = Len(.Value)
            iLB = 0
 
            Do While iUB - iLB > 1
                iMid = (iLB + iUB) \ 2
                If .Characters(iMid, 1).Font.Bold Then
                    iLB = iMid
                Else
                    iUB = iMid
                End If
            Loop
 
            BoldEnds = iUB
        ElseIf .Font.Bold Then
            BoldEnds = Len(.Value) + 1
        Else
            BoldEnds = 1
        End If
    End With
End Function

      ------------A------------     -------B--------       ----C-----
  1             Input                          Bold               Not Bold
  2   der Anwalt,-¨e –solicitor der Anwalt,-¨e       –solicitor
  3   der Fahrstuhl,-¨e –lift     der Fahrstuhl,-¨ e  –lift   
  4   fliehen-to escape            fliehen                  -to escape

La formula en B2 es
=LEFT(A2, BoldEnds(A2)-1)

y la formula en C2 es
=TRIM(MID(A2, BoldEnds(A2), LEN(A2)))

Ojala te sirva  :)

http://www.excelforum.com/excel-general/754022-split-cell-bold-text-and-non-bold-text.html (http://www.excelforum.com/excel-general/754022-split-cell-bold-text-and-non-bold-text.html)
Título: Re:Detectar formato desde vb6 en una planilla de Excel
Publicado por: Bazooka en Septiembre 21, 2011, 06:36:32 pm
MUCHAS GRACIAS!!! Lola ahora lo baj y pruebo!!