Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Programming / October 2006

Tip: Looking for answers? Try searching our database.

order of paragraphs

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Laura - 28 Sep 2006 13:33 GMT
hi!
With a text  document, i have to give format to the paragraphs depending on
the first character of every one.
(if first character of the paragraph is a 'p' then-->paragraph bold,....
if first character of the paragraph is a 'd' then --> paragraph italic,... )
I'm programming a macro that uses the mail merge to filter an specific letter.
To know the correct order of the paragraphs, I do this:

For i = 1 To numParrafos

               ActiveDocument.Paragraphs(i).Range.Select
               Selection.HomeKey Unit:=wdLine
               Selection.TypeText (i & "*")
               Selection.MoveLeft Unit:=wdCharacter, Count:=1
               ……..
Next i

But when I get the output document, and I order in alphabetical order, I get
an undesired  order  (because take the numbers as text).

Is there any way to convert a  text-field to number-field?
If don’t: do you know any way to resolved the problem?
Thank you
Dave Lett - 28 Sep 2006 13:54 GMT
Hi Laura,

I'm not really sure what you're asking. Are you asking for help with
sorting? Are you asking for help with changing to bold/italic font based on
the first character? You ask about changing a text field to a number field,
but the sample code wouldn't insert a field? Essentially, I don't really
understand the problem.

I _think_ the problem is this.

You have a number of paragraphs. Each paragraph starts with either "p" or
"d". You want to group all the "p" paragraphs together and all the "d"
paragraphs together. Then, you want to cycle through each paragraph in the
document and put a number before it.

If this is your problem, then  you can use something like the following:

Dim iPara As Integer

ActiveDocument.Content.Sort
For iPara = 1 To ActiveDocument.Paragraphs.Count
   ActiveDocument.Paragraphs(iPara).Range.InsertBefore Text:=iPara & "*"
Next iPara

HTH,
Dave

> hi!
> With a text  document, i have to give format to the paragraphs depending
[quoted text clipped - 23 lines]
> If don't: do you know any way to resolved the problem?
> Thank you
Laura - 28 Sep 2006 14:55 GMT
hi Dave, I'l try to explain better my problem
when you put the number of the paragraph ,as you well say, you have to put:

For iPara = 1 To ActiveDocument.Paragraphs.Count
    ActiveDocument.Paragraphs(iPara).Range.InsertBefore Text:=iPara & "*"
Next iPara

with this lines you get,for example:

1*p*hello dave
2*p*thank
  ' more liness
10*d*you very
11*p*much

then, i filter the data, for example: only the paragraphs that begin with
'p'....and apply the format that i want. I do this with mail merge, so now, i
have to put together all the sub-documents that i have get.

so i have something like this:

1*p*hello dave
2*p*thank
11*p*much
  ' more liness
10*d*you very

and finally i must order the paragraphs, but i get this output:

1*p*hello dave
10*d*you very
11*p*much
'more lines
2*p*thank

this is because i'm appling an text-alphabetical-order, and i need a
number-alphabetical-order.

text-alphabetical-order: 1-10-11-12-----2-20-21-----
numer-alphabetical-order: 1-2-----9-10-11

Do you know what i mean?

THANK YOU IN ADVANCE

> Hi Laura,
>
[quoted text clipped - 50 lines]
> > If don't: do you know any way to resolved the problem?
> > Thank you
Dave Lett - 28 Sep 2006 15:19 GMT
Hi Laura,

Yea, I think I know what you want. You start with paragraphs that have p or
d in front of them. You want to group those. Then, you want to insert
numbers before each paragraph.

Did you try the routine that I posted in the last message?

Dave

> hi Dave, I'l try to explain better my problem
> when you put the number of the paragraph ,as you well say, you have to
[quoted text clipped - 103 lines]
>> > If don't: do you know any way to resolved the problem?
>> > Thank you
Laura - 29 Sep 2006 07:14 GMT
Hello!
Yes, I,ve try it and it doesn't work. When I do the mailmerge the field
takes text properties.
i think tha the solution is to specify in the combination that this field is
a number, but i don't know how to do it.

ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
       , Text:="""order"""

> Hi Laura,
>
[quoted text clipped - 113 lines]
> >> > If don't: do you know any way to resolved the problem?
> >> > Thank you
Dave Lett - 29 Sep 2006 14:56 GMT
Hi again,

I don't quite understand. That is, you insert the numbers so that it's
organized numerically: 1 through x number of paragraphs. Then you, as you
say, "filter the data" and apply the format that you want and you do this
with a mailmerge. You don't need to do all of that. You apply the format
without filtering and without running a mailmerge.

Let's say that you start with the following (no formatting applied to
anything:

p*hello dave
p*thank
  ' more liness
d*you very
p*much

If you run the following routine,

Dim iPara As Integer

With Selection
   .HomeKey Unit:=wdStory
   With .Find
       .ClearFormatting
       .Text = "d*"
       With .replacement
           .ClearFormatting
           .Text = ""
           .Font.Italic = True
       End With
       .Execute Replace:=wdReplaceAll

       .Text = "p*"
       With .replacement
           .ClearFormatting
           .Text = ""
           .Font.Bold = True
       End With
       .Execute Replace:=wdReplaceAll

       .Text = "*"
       With .replacement
           .Text = "*"
           .Font.Bold = False
           .Font.Italic = False
       End With
       .Execute Replace:=wdReplaceAll
   End With
End With

For iPara = 1 To ActiveDocument.Paragraphs.Count
   ActiveDocument.Paragraphs(iPara).Range.InsertBefore Text:=iPara & "*"
Next iPara

With ActiveDocument
   .Content.ConvertToTable Separator:="*", NumColumns:=3
   .Tables(1).Sort
   .Tables(1).ConvertToText Separator:="*"
End With

then you will end up with the following output, where "p" is bold and "d" is
italic
1*p*hello dave

2*p*thank

3*d*you very

4*p*much

HTH,

Dave

> Hello!
> Yes, I,ve try it and it doesn't work. When I do the mailmerge the field
[quoted text clipped - 134 lines]
>> >> > If don't: do you know any way to resolved the problem?
>> >> > Thank you
Russ - 30 Sep 2006 20:20 GMT
Laura,
Dave said in his first reply "Are you asking for help with changing to
bold/italic font based on the first character?

If that is one of your ultimate goals then maybe you can use some variation
of this code:
Dim aPara As Paragraph
For Each aPara In ActiveDocument.Paragraphs
   Select Case aPara.Range.Characters(1)
   Case "p"
   aPara.Range.Font.Bold = True
   Case "d"
   aPara.Range.Font.Italic = True
   End Select
Next aPara

> Hi again,
>
[quoted text clipped - 209 lines]
>>>>>> If don't: do you know any way to resolved the problem?
>>>>>> Thank you

Signature

Russ

drsmN0SPAMikleAThotmailD0Tcom.INVALID

Laura - 02 Oct 2006 09:19 GMT
Hi!
First of all i would like to say thank to you. I'm learning a lot in this
group

to simplify my first post I only write one field in the paragragh:
"1*p*hello", but really i have 6 fields in every paragraph (and every one
with different formats ) and a medium of 150 paragrphs per document, so I
thought that with mail merge it will be faster to format the paragraphs.
Isn't it?

I solved my problem with this code:
ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
       , Text:="""Lugar"" \# ""#0.00""", PreserveFormatting:=False

So, I give my field a number format, and when I sort the document
(activeDocument.Content.Sort), I get the correct order

> Laura,
> Dave said in his first reply "Are you asking for help with changing to
[quoted text clipped - 225 lines]
> >>>>>> If don't: do you know any way to resolved the problem?
> >>>>>> Thank you
Russ - 02 Oct 2006 09:40 GMT
Howdy,
It's still a little confusing. Could you show an small example of the data
with six fields per paragraph? And explain how you might want to format each
field? I was confused because you said you were trying to format the whole
paragraph bold for instance when it started with a 'p', but now you're
saying a paragraph might have six distinctly different formats within the
paragraph?

> Hi!
> First of all i would like to say thank to you. I'm learning a lot in this
[quoted text clipped - 242 lines]
>>>>>>>> If don't: do you know any way to resolved the problem?
>>>>>>>> Thank you

Signature

Russ

drsmN0SPAMikleAThotmailD0Tcom.INVALID

Laura - 02 Oct 2006 11:51 GMT
Hi Russ. Here comes the example. It´s complex to explain

My start point is a document ‘encode’:

P*6.5*Identificación de Elementos*Los elementos integrantes de la
configuración física de cualquier producto, se identifican con designadores
de referencia, que estructurados *Ejemplo*Esto es un ejemplo
1*a*CTAEA-SJ-SE-4*Designador correspondiente al Bastidor Energía *Sala de
equipos*
1*b*CTAEA-SJ-FN-21W99P1*Designador correspondiente al Conector*Sistema
Control de Tráfico
D*Plano 1**En función del grado jerárquico del producto, se utilizan
designadores con estructura perteneciente a uno de los siguientes niveles:*
2*a*Nivel Sistema/Subsistema*Este sistema…*

Where the first character of every paragraph, indicates the kind of  format
it will have. It will take different values: p,d,1,2,3,a,x,c,s…

The paragraphs have this fields (separated by the asteristic simbol)
kind*number*title*explanation.

Number--> bold.
title must --> bold and underline
explanation--> without bold neither underline

so I thought that I must use mail merge (using this document as data source).
To know the correct order of each sentence, I've added at  the beginning  of
each paragraph, the number of order.

1*P*6.5*Identificación de Elementos*Los elementos integrantes de la
configuración física de cualquier producto, se identifican con designadores
de referencia*Ejemplo*Esto es un ejemplo
2*1*a*CTEA-SJ*Designador correspondiente al Bastidor Energía *Sala de equipos*
3*1*b*CTAA-SJ-FN*Designador correspondiente al Conector*Sistema Control de
Tráfico


And i do the filter of each kind of paragraphs (p,d,1,….), but when I join
together the sub-documents obtained with the combination, I found a problem:
the “number” field is text so when I order the paragraphs, get a wrong order:
1-10-11-12----2-3-4

For my macro it’s very important that the code executes as fast as possible.
Do you think that mail merge is a good  option (taking in count that every
documents can have  hundred of paragraphs) or that I have do it with a
select-case clause
Russ - 03 Oct 2006 09:12 GMT
Laura,
There is an expression... When you have a hammer, everything looks like a
nail. You are familiar with Mail Merge fields and I am familiar with using
find and replace to automate formatting with code. I think you could also
use Select Case, if the whole paragraph is formatted the same after testing
the first character; and I hope we agree on what Word considers to be a
paragraph. You can try both methods to see which is faster. Report back, if
using mail merge is significantly faster. I am not even sure how you can
format something with mail merge, unless you are talking about using markup
tags like in html code?
And by fields are you talking about mail merge fields that have special
field characters that look like <<  >>?

You can use this code to compare how much time your different subroutines
run to completion.
Dim StartTime As Single
StartTime = Timer
'...Run code here
MsgBox "Time taken was: " & (Timer - StartTime) & " seconds"

> Hi Russ. Here comes the example. It´s complex to explain
>
[quoted text clipped - 42 lines]
> documents can have  hundred of paragraphs) or that I have do it with a
> select-case clause

Signature

Russ

drsmN0SPAMikleAThotmailD0Tcom.INVALID

 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.