seleccionar línea por código vba

07/11/2009 - 14:15 por chiri13 | Informe spam
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

Preguntas similare

Leer las respuestas

#6 chiri13
12/11/2009 - 13:37 | Informe spam
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" escribió en el mensaje
news:e0GRg$
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



Respuesta Responder a este mensaje
#7 Monica May
12/11/2009 - 22:40 | Informe spam
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..!

Saludos
Monica



www.fermu.com
www.teladearana.es
Respuesta Responder a este mensaje
#8 Monica May
12/11/2009 - 23:20 | Informe spam
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
Respuesta Responder a este mensaje
#9 chiri13
13/11/2009 - 12:39 | Informe spam
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" escribió en el mensaje
news:%235BzSZ%
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




Respuesta Responder a este mensaje
#10 Monica May
15/11/2009 - 01:30 | Informe spam
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!

Saludos
Monica


www.fermu.com
www.teladearana.es
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida