Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

seleccionar línea por código vba

793 views
Skip to first unread message

chiri13

unread,
Nov 7, 2009, 8:15:45 AM11/7/09
to
Tengo un documento con 300 p�ginas y quiero realizar dos mejoras con �l sin
trabajar mucho ;-)

Una de las mejoras es que tengo unas 50 l�neas que son los t�tulos de esta
forma:

1 T�tulo1
1.2 T�tulo 1.2
1.3 T�tulo 1.3
1.3.1 T�tulo 1.3.1
2 T�tulo2
....

Cada l�nea de este t�tulo se caracter�za por tener una tabulaci�n delante
(el resto del documento no) as� que si yo utilizo este c�digo

Selection.Find.ClearFormatting
With Selection.Find
.Text = "^t"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute

me va seleccionando el tabulador que hay antes del T�tulo

Ahora bien, yo querr�a seleccionar una l�nea, y que busque si tiene alg�n
punto, si no lo tiene le asigne el estilo T�tulo 1, si tiene un punto el
estilo T�tulo 2 y as� sucesivamente.

Ser�a posible

GRACIAS


Monica May

unread,
Nov 8, 2009, 6:56:16 PM11/8/09
to

holas Chiri,

Bien pregunto dudas que me vienen :P >>

- La linea que quieres seleccionar es cualquiera o alguna en especial ?
-Han de ser lineas o bien parrafos completos ???

Comentanos...!

Saludos
Monica


-- Consulta---
> Tengo un documento con 300 p�ginas y quiero realizar dos mejoras con �l
> sin trabajar mucho ;-)
>
> Una de las mejoras es que tengo unas 50 l�neas que son los t�tulos de esta
> forma:
>
> 1 T�tulo1
> 1.2 T�tulo 1.2
> 1.3 T�tulo 1.3
> 1.3.1 T�tulo 1.3.1
> 2 T�tulo2
> ....
>
> Cada l�nea de este t�tulo se caracter�za por tener una tabulaci�n delante
> (el resto del documento no) as� que si yo utilizo este c�digo


>
> Selection.Find.ClearFormatting
> With Selection.Find
> .Text = "^t"
> .Replacement.Text = ""
> .Forward = True
> .Wrap = wdFindAsk
> .Format = False
> .MatchCase = False
> .MatchWholeWord = False
> .MatchWildcards = False
> .MatchSoundsLike = False
> .MatchAllWordForms = False
> End With
> Selection.Find.Execute
>

> me va seleccionando el tabulador que hay antes del T�tulo
>
> Ahora bien, yo querr�a seleccionar una l�nea, y que busque si tiene alg�n
> punto, si no lo tiene le asigne el estilo T�tulo 1, si tiene un punto el
> estilo T�tulo 2 y as� sucesivamente.
>
> Ser�a posible
>
> GRACIAS
>
>

chiri13

unread,
Nov 9, 2009, 3:38:06 AM11/9/09
to
Selecciono las l�neas que tienen una tabulaci�n

he hecho esto este fin de semana, pero no acaba de funcionar del todo

Dim parrafo As Paragraph

For Each parrafo In ActiveDocument

Selection.Find.ClearFormatting

With Selection.Find

.Text = "^t"

.Replacement.Text = ""

.Forward = True

.Wrap = wdFindContinue

.Format = False

.MatchCase = False

.MatchWholeWord = False

.MatchWildcards = False

.MatchSoundsLike = False

.MatchAllWordForms = False

End With

' Selection.Find.Execute s�lo busca

' Selection.Find.Execute Replace:=wdReplaceAll reemplaza todo

Selection.Find.Execute Replace:=wdReplaceOne

ActiveDocument.Paragraphs(ActiveDocument.Range(0,
Selection.End).Paragraphs.Count).Range.Select

Select Case Len(Selection.Text) - Len(Replace(Selection.Text, ".", ""))

Case 0

Selection.Range.Paragraphs.Style = "T�tulo 1"

Case 1

Selection.Range.Paragraphs.Style = "T�tulo 2"

Case 2

Selection.Range.Paragraphs.Style = "T�tulo 3"

End Select

next parrafo

End Sub

"Monica May" <t...@NOSPAM.teladearana.es> escribi� en el mensaje
news:Oq%23bQ8MY...@TK2MSFTNGP04.phx.gbl...


> holas Chiri,
>
> Bien pregunto dudas que me vienen :P >>
>
> - La linea que quieres seleccionar es cualquiera o alguna en especial ?
> -Han de ser lineas o bien parrafos completos ???
>
> Comentanos...!
>
> Saludos
> Monica
>
>
> -- Consulta---

>> Tengo un documento con 300 p�ginas y quiero realizar dos mejoras con �l
>> sin trabajar mucho ;-)
>>
>> Una de las mejoras es que tengo unas 50 l�neas que son los t�tulos de
>> esta forma:
>>


>> 1 T�tulo1
>> 1.2 T�tulo 1.2
>> 1.3 T�tulo 1.3
>> 1.3.1 T�tulo 1.3.1
>> 2 T�tulo2
>> ....
>>

>> Cada l�nea de este t�tulo se caracter�za por tener una tabulaci�n delante
>> (el resto del documento no) as� que si yo utilizo este c�digo


>>
>> Selection.Find.ClearFormatting
>> With Selection.Find
>> .Text = "^t"
>> .Replacement.Text = ""
>> .Forward = True
>> .Wrap = wdFindAsk
>> .Format = False
>> .MatchCase = False
>> .MatchWholeWord = False
>> .MatchWildcards = False
>> .MatchSoundsLike = False
>> .MatchAllWordForms = False
>> End With
>> Selection.Find.Execute
>>

Monica May

unread,
Nov 9, 2009, 5:58:27 PM11/9/09
to
hola Chiri,


Vale la idea la tengo quieres buscar los puntos de un parrafo y segun sus
puntos aplicar un estilo u otro pero..... este codigo da error si se
utilizan [ listas de numeracion y vinetas ] entonces entiendo que no hay
ninguna lista de numeracion y vinetas en el documento no????

y que ... el tema de >>

1 T�tulo1
1.2 T�tulo 1.2
1.3 T�tulo 1.3
1.3.1 T�tulo 1.3.1
2 T�tulo2

Esta aplicado manualmente este tipo de numeracion???

es que cambia el codigo si esta manual o esta aplicando las listas de
numeracion y vineta ....

Comentanos como tienes este tipo de numeracion ...

Saludos
Monica


--
> Selecciono las l�neas que tienen una tabulaci�n


>
> he hecho esto este fin de semana, pero no acaba de funcionar del todo
>
> Dim parrafo As Paragraph
>
> For Each parrafo In ActiveDocument
>
> Selection.Find.ClearFormatting
>
> With Selection.Find
>
> .Text = "^t"
>
> .Replacement.Text = ""
>
> .Forward = True
>
> .Wrap = wdFindContinue
>
> .Format = False
>
> .MatchCase = False
>
> .MatchWholeWord = False
>
> .MatchWildcards = False
>
> .MatchSoundsLike = False
>
> .MatchAllWordForms = False
>
> End With
>

> ' Selection.Find.Execute s�lo busca


>
> ' Selection.Find.Execute Replace:=wdReplaceAll reemplaza todo
>
>
>
> Selection.Find.Execute Replace:=wdReplaceOne
>
> ActiveDocument.Paragraphs(ActiveDocument.Range(0,
> Selection.End).Paragraphs.Count).Range.Select
>
>
>
> Select Case Len(Selection.Text) - Len(Replace(Selection.Text, ".", ""))
>
> Case 0
>

> Selection.Range.Paragraphs.Style = "T�tulo 1"
>
> Case 1
>
> Selection.Range.Paragraphs.Style = "T�tulo 2"
>
> Case 2
>
> Selection.Range.Paragraphs.Style = "T�tulo 3"


>
> End Select
>
>
>
> next parrafo
>
>
>
> End Sub
>

> "Monica May" <t...@NOSPAM.teladearana.es> escribi� en el mensaje

> news:Oq%23bQ8MY...@TK2MSFTNGP04.phx.gbl...
>> holas Chiri,
>>
>> Bien pregunto dudas que me vienen :P >>
>>
>> - La linea que quieres seleccionar es cualquiera o alguna en especial ?
>> -Han de ser lineas o bien parrafos completos ???
>>
>> Comentanos...!
>>
>> Saludos
>> Monica
>>
>>
>> -- Consulta---

>>> Tengo un documento con 300 p�ginas y quiero realizar dos mejoras con �l
>>> sin trabajar mucho ;-)
>>>
>>> Una de las mejoras es que tengo unas 50 l�neas que son los t�tulos de
>>> esta forma:
>>>


>>> 1 T�tulo1
>>> 1.2 T�tulo 1.2
>>> 1.3 T�tulo 1.3
>>> 1.3.1 T�tulo 1.3.1
>>> 2 T�tulo2
>>> ....
>>>

>>> Cada l�nea de este t�tulo se caracter�za por tener una tabulaci�n
>>> delante (el resto del documento no) as� que si yo utilizo este c�digo


>>>
>>> Selection.Find.ClearFormatting
>>> With Selection.Find
>>> .Text = "^t"
>>> .Replacement.Text = ""
>>> .Forward = True
>>> .Wrap = wdFindAsk
>>> .Format = False
>>> .MatchCase = False
>>> .MatchWholeWord = False
>>> .MatchWildcards = False
>>> .MatchSoundsLike = False
>>> .MatchAllWordForms = False
>>> End With
>>> Selection.Find.Execute
>>>

chiri13

unread,
Nov 10, 2009, 3:27:26 AM11/10/09
to
no, el texto en este momento no tiene formato

la idea es buscar los p�rrafos que tienen tabulaci�n al principio (son los
�nicos que la tienen), y si ese p�rrafo tiene tabulaci�n, mirar si tiene 0
puntos, 1 punto, 2 puntos, y en funci�n de ello, poner un estilo u otro

muchas gracias por estar ah�

"Monica May" <t...@NOSPAM.teladearana.es> escribi� en el mensaje

news:e5wMpAZY...@TK2MSFTNGP02.phx.gbl...


> hola Chiri,
>
>
> Vale la idea la tengo quieres buscar los puntos de un parrafo y segun sus
> puntos aplicar un estilo u otro pero..... este codigo da error si se
> utilizan [ listas de numeracion y vinetas ] entonces entiendo que no hay
> ninguna lista de numeracion y vinetas en el documento no????
>
> y que ... el tema de >>
>

> 1 T�tulo1
> 1.2 T�tulo 1.2
> 1.3 T�tulo 1.3
> 1.3.1 T�tulo 1.3.1

> 2 T�tulo2


>
> Esta aplicado manualmente este tipo de numeracion???
>
> es que cambia el codigo si esta manual o esta aplicando las listas de
> numeracion y vineta ....
>
> Comentanos como tienes este tipo de numeracion ...
>
> Saludos
> Monica
>
>
> --

>> Selecciono las l�neas que tienen una tabulaci�n


>>
>> he hecho esto este fin de semana, pero no acaba de funcionar del todo
>>
>> Dim parrafo As Paragraph
>>
>> For Each parrafo In ActiveDocument
>>
>> Selection.Find.ClearFormatting
>>
>> With Selection.Find
>>
>> .Text = "^t"
>>
>> .Replacement.Text = ""
>>
>> .Forward = True
>>
>> .Wrap = wdFindContinue
>>
>> .Format = False
>>
>> .MatchCase = False
>>
>> .MatchWholeWord = False
>>
>> .MatchWildcards = False
>>
>> .MatchSoundsLike = False
>>
>> .MatchAllWordForms = False
>>
>> End With
>>

>> ' Selection.Find.Execute s�lo busca


>>
>> ' Selection.Find.Execute Replace:=wdReplaceAll reemplaza todo
>>
>>
>>
>> Selection.Find.Execute Replace:=wdReplaceOne
>>
>> ActiveDocument.Paragraphs(ActiveDocument.Range(0,
>> Selection.End).Paragraphs.Count).Range.Select
>>
>>
>>
>> Select Case Len(Selection.Text) - Len(Replace(Selection.Text, ".",
>> ""))
>>
>> Case 0
>>

>> Selection.Range.Paragraphs.Style = "T�tulo 1"
>>
>> Case 1
>>
>> Selection.Range.Paragraphs.Style = "T�tulo 2"
>>
>> Case 2
>>
>> Selection.Range.Paragraphs.Style = "T�tulo 3"


>>
>> End Select
>>
>>
>>
>> next parrafo
>>
>>
>>
>> End Sub
>>

>> "Monica May" <t...@NOSPAM.teladearana.es> escribi� en el mensaje

>> news:Oq%23bQ8MY...@TK2MSFTNGP04.phx.gbl...
>>> holas Chiri,
>>>
>>> Bien pregunto dudas que me vienen :P >>
>>>
>>> - La linea que quieres seleccionar es cualquiera o alguna en especial ?
>>> -Han de ser lineas o bien parrafos completos ???
>>>
>>> Comentanos...!
>>>
>>> Saludos
>>> Monica
>>>
>>>
>>> -- Consulta---

>>>> Tengo un documento con 300 p�ginas y quiero realizar dos mejoras con �l
>>>> sin trabajar mucho ;-)
>>>>
>>>> Una de las mejoras es que tengo unas 50 l�neas que son los t�tulos de
>>>> esta forma:
>>>>


>>>> 1 T�tulo1
>>>> 1.2 T�tulo 1.2
>>>> 1.3 T�tulo 1.3
>>>> 1.3.1 T�tulo 1.3.1
>>>> 2 T�tulo2
>>>> ....
>>>>

>>>> Cada l�nea de este t�tulo se caracter�za por tener una tabulaci�n
>>>> delante (el resto del documento no) as� que si yo utilizo este c�digo


>>>>
>>>> Selection.Find.ClearFormatting
>>>> With Selection.Find
>>>> .Text = "^t"
>>>> .Replacement.Text = ""
>>>> .Forward = True
>>>> .Wrap = wdFindAsk
>>>> .Format = False
>>>> .MatchCase = False
>>>> .MatchWholeWord = False
>>>> .MatchWildcards = False
>>>> .MatchSoundsLike = False
>>>> .MatchAllWordForms = False
>>>> End With
>>>> Selection.Find.Execute
>>>>

Monica May

unread,
Nov 11, 2009, 5:39:44 PM11/11/09
to
Holas de nuevo,

> no, el texto en este momento no tiene formato

> la idea es buscar los parrafos que tienen tabulacion al principio (son los
> unicos que la tienen), y si ese parrafo tiene tabulacion, mirar si tiene 0
> puntos, 1 punto, 2 puntos, y en funcion de ello, poner un estilo u otro


Este codigo que nos ofreces solo sera valido para las tabulaciones pero NO
si hay numeracion y vinetas :P >>

Bien modifica la linea siguiente >>

For Each parrafo In ActiveDocument.Paragraphs


luego elimina estas lineas >>


ActiveDocument.Paragraphs(ActiveDocument.Range(0, _
Selection.End).Paragraphs.Count).Range.Select

y ya lo tienes pero te buscara Parrafos eh? no lineas sueltas, sino aquellos
parrafos que tengan tabulacion...

Comentanos...!

Saludos
Monica


--
www.fermu.com
www.teladearana.es


chiri13

unread,
Nov 12, 2009, 7:37:34 AM11/12/09
to
Esto funciona pero s�lo me sirve para T�tulo1 puesto que no puedo
seleccionar el p�rrafo para averiguar cuantos puntos tiene y en funci�n de
ello, poner un T�tulo u otro

muchas gracias

"Monica May" <t...@NOSPAM.teladearana.es> escribi� en el mensaje

news:e0GRg$xYKHA...@TK2MSFTNGP04.phx.gbl...

Monica May

unread,
Nov 12, 2009, 4:40:27 PM11/12/09
to
holas de nuevo,


> ...pero solo me sirve para T�tulo1 puesto que no puedo seleccionar el
> parrafo para averiguar cuantos puntos tiene y en funcion de ello, poner
> un T�tulo u otro

apss ahora me he perdido :( , el codigo ya pone el titulo 1, 2 o 3 a los
parrafos con tabulacion segun sus puntos, si el parrafo tiene un punto te
pondra el titulo 1, si tiene dos puntos el titulo 2 y si tiene 3 puntos el
titulo 3... no tienes que seleccionar el parrafo para saberlo sino que el
codigo ya te lo hace ...


Comentanos..!

Monica May

unread,
Nov 12, 2009, 5:20:16 PM11/12/09
to
Aclaracion :)

Case 0 [ Te pondra el estilo titulo uno para aquellos que no tengan
puntos ]

Case 1 [ Aquellos que tengan un punto -> titulo 1 ]

Case 2 [ Aquellos que tengan dos puntos -> Titulo 2]

El codigo de mis pruebas >>

'[]

Sub demo()

Dim parrafo As Paragraph


For Each parrafo In ActiveDocument.Paragraphs

With Selection
With .Find
.ClearFormatting
.Text = "^t"


.Forward = True
.Wrap = wdFindContinue

.Execute Replace:=wdReplaceOne
End With
.EndKey wdLine, wdExtend
Select Case Len(.Text) - Len(Replace(.Text, ".", ""))
Case 0


.Range.Paragraphs.Style = "T�tulo 1"
Case 1

.Range.Paragraphs.Style = "T�tulo 2"
Case 2

.Range.Paragraphs.Style = "T�tulo 3"
Case 3
.Range.Paragraphs.Style = "T�tulo 4"
MsgBox "parrafo de tres puntos"
Case Is > 3
Exit Sub
End Select
End With
Next
End Sub

'[]

Mira a ver si me comi algo al comentar :P !

Saludos
Monica

chiri13

unread,
Nov 13, 2009, 6:39:35 AM11/13/09
to
El problema est� en que al quitar la siguiente l�nea

> ActiveDocument.Paragraphs(ActiveDocument.Range(0, _
> Selection.End).Paragraphs.Count).Range.Select

no hab�a puesto esta que hace parecida funci�n pero no corta el selection

.EndKey wdLine, wdExtend

entonces donde estaba el cursor, nunca hab�a "." con lo que siempre era Case
0

Por cierto, a este c�digo, le pasa lo mismo que al siguiente, no termina
nunca, supongo que igual que el anterior se podr� finalizar de forma
anticipada


muchas gracias por todo

un asludo

"Monica May" <t...@NOSPAM.teladearana.es> escribi� en el mensaje

news:%235BzSZ%23YKH...@TK2MSFTNGP02.phx.gbl...


> Aclaracion :)
>
> Case 0 [ Te pondra el estilo titulo uno para aquellos que no tengan
> puntos ]
>
> Case 1 [ Aquellos que tengan un punto -> titulo 1 ]
>
> Case 2 [ Aquellos que tengan dos puntos -> Titulo 2]
>
> El codigo de mis pruebas >>
>
> '[]
>
> Sub demo()
>
> Dim parrafo As Paragraph
> For Each parrafo In ActiveDocument.Paragraphs
> With Selection
> With .Find
> .ClearFormatting
> .Text = "^t"
> .Forward = True
> .Wrap = wdFindContinue
> .Execute Replace:=wdReplaceOne
> End With
> .EndKey wdLine, wdExtend
> Select Case Len(.Text) - Len(Replace(.Text, ".", ""))
> Case 0

> .Range.Paragraphs.Style = "T�tulo 1"
> Case 1
> .Range.Paragraphs.Style = "T�tulo 2"
> Case 2
> .Range.Paragraphs.Style = "T�tulo 3"
> Case 3
> .Range.Paragraphs.Style = "T�tulo 4"

Monica May

unread,
Nov 14, 2009, 7:30:20 PM11/14/09
to

hola Chiri de nuevo,

Pues entonces prueba mejor este codigo siguiente >>

'[]

Sub parrafos_tabulacion_estilos()

Dim x As Long
Selection.HomeKey wdStory
With Selection.Find
Do While .Execute _
(FindText:="^t", Forward:=True) = True
With Selection
.Delete
.EndKey wdLine, wdExtend
x = 0
x = Len(.Text) - Len(Replace(.Text, ".", ""))
Select Case x
Case 0
.Range.Paragraphs.Style = "T�tulo 1"
Case 1
.Range.Paragraphs.Style = "T�tulo 2"
Case 2


.Range.Paragraphs.Style = "T�tulo 3"
End Select

.Collapse wdCollapseEnd
End With: Loop: End With:End Sub

'[]

el otro codigo no es que vuelva a empezar sino que recorre todos los
parrafos en busca de la tabulacion y pasa por todos los parrafos o marcas de
parrafo y cuando termina su evalucion entonces se para :P

Prueba a ver y... Comentanos....!

chiri13

unread,
Nov 16, 2009, 11:17:34 AM11/16/09
to
ESTO HA SIDO PERFECTO, ERES UNA ARTISTA

MUCH�SIMAS GRACIAS POR TODO

"Monica May" <t...@NOSPAM.teladearana.es> escribi� en el mensaje

news:eXJZTrY...@TK2MSFTNGP04.phx.gbl...


>
> hola Chiri de nuevo,
>
> Pues entonces prueba mejor este codigo siguiente >>
>
> '[]
>
> Sub parrafos_tabulacion_estilos()
>
> Dim x As Long
> Selection.HomeKey wdStory
> With Selection.Find
> Do While .Execute _
> (FindText:="^t", Forward:=True) = True
> With Selection
> .Delete
> .EndKey wdLine, wdExtend
> x = 0
> x = Len(.Text) - Len(Replace(.Text, ".", ""))
> Select Case x
> Case 0

> .Range.Paragraphs.Style = "T�tulo 1"
> Case 1
> .Range.Paragraphs.Style = "T�tulo 2"
> Case 2
> .Range.Paragraphs.Style = "T�tulo 3"

Monica May

unread,
Nov 16, 2009, 5:17:02 PM11/16/09
to
Nada nada Gracias a ti Chiri :) !!

Saludos
Monica

0 new messages