Solved

How do I add a border to a paragraph in Ms Word?

Posted on 2009-07-09
14
793 Views
Last Modified: 2012-05-07
I'm trying to generate a word document and I need to add a border. My 2 attempts below to a add a border to a paragraph (or line) only results in a border at the bottom of any text displayed. I'm trying to just put it under "2009 Call Report".
Dim oWord As Object

        Dim oDoc As Object

        Dim oPara1 As Object, oPara2 As Object

        Dim strText As String

        oWord = CreateObject("Word.Application")

        oWord.Visible = True

        oDoc = oWord.Documents.Add

        oDoc.Activate()

 

        ' Attempt #1

        With oWord.Selection

            .Font.Size = 24

            .Font.Bold = True

            .TypeText("2009 Call Report")

            .Borders.Item(wdBorderBottom).LineStyle = wdLineStyleSingle

            .Font.Size = 12

            .Font.Bold = False

            .TypeParagraph()

            .Font.Color = wdColorRed

            .Font.Italic = False

            .TypeText("This sentence will appear in red. ")

            .TypeParagraph()

            .Font.Color = wdColorBlack

            .Font.Italic = True

            .Font.Size = .Font.Size + 2

            .TypeText("Text color was reset to black, " & _

                      "but the font size was increased by two points.")

        End With

 

        ' Attempt #2

        oPara1 = oDoc.Content.Paragraphs.Add

        oPara1.Range.Text = "2009 Call Reports"

        oPara1.Range.Font.Bold = True

        oPara1.Range.Borders.Item(wdBorderBottom).LineStyle = wdLineStyleSingle

        oPara1.Format.SpaceAfter = 24    '24 pt spacing after paragraph.

        oPara1.Range.InsertParagraphAfter()

        oPara2 = oDoc.Content.Paragraphs.Add

        oPara2.Range.Text = "Salesperson: "

        oPara2.Range.Font.Bold = True

        oPara2.Range.Font.Color = wdColorRed

        oPara2.Format.SpaceAfter = 14

        oPara2.Range.InsertParagraphAfter()

Open in new window

0
Comment
Question by:wellhole
  • 5
  • 5
  • 4
14 Comments
 
LVL 37

Expert Comment

by:Joanne M. Orzech
Comment Utility
I don't know vb.nbet...but to put a line border around the entire selected paragraph, vba would be (this is simpy a recorded macro):
    With Selection.ParagraphFormat

        With .Borders(wdBorderLeft)

            .LineStyle = wdLineStyleSingle

            .LineWidth = wdLineWidth050pt

            .Color = wdColorAutomatic

        End With

        With .Borders(wdBorderRight)

            .LineStyle = wdLineStyleSingle

            .LineWidth = wdLineWidth050pt

            .Color = wdColorAutomatic

        End With

        With .Borders(wdBorderTop)

            .LineStyle = wdLineStyleSingle

            .LineWidth = wdLineWidth050pt

            .Color = wdColorAutomatic

        End With

        With .Borders(wdBorderBottom)

            .LineStyle = wdLineStyleSingle

            .LineWidth = wdLineWidth050pt

            .Color = wdColorAutomatic

        End With

        With .Borders

            .DistanceFromTop = 1

            .DistanceFromLeft = 4

            .DistanceFromBottom = 1

            .DistanceFromRight = 4

            .Shadow = False

        End With

    End With

    With Options

        .DefaultBorderLineStyle = wdLineStyleSingle

        .DefaultBorderLineWidth = wdLineWidth050pt

        .DefaultBorderColor = wdColorAutomatic

    End With

Open in new window

0
 
LVL 59

Accepted Solution

by:
Chris Bottomley earned 500 total points
Comment Utility
Hello wellhole,

Try the following, (again VBA) which might be easier to re-use.

Regards,
Chris
Sub addBorder()
Dim bord As Variant 
    With Selection.ParagraphFormat
        For Each bord In Array(wdBorderLeft, wdBorderRight, wdBorderTop, wdBorderBottom)
            With .Borders(bord)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth050pt
                .Color = wdColorAutomatic
            End With
            With .Borders
                .DistanceFromTop = 1
                .DistanceFromLeft = 4
                .DistanceFromBottom = 1
                .DistanceFromRight = 4
                .Shadow = False
            End With
        Next
    End With 
End Sub

Open in new window

0
 
LVL 9

Author Comment

by:wellhole
Comment Utility
Unfortunately, neither solves the problem and accomplish the exact same result (they add a border to the bottom of the text). Thanks for trying, though. The solution I finally figured out is:

.TypeText("2009 Call Report")
.Borders.Item(wdBorderBottom).LineStyle = wdLineStyleSingle
.InsertBreak(wdSectionBreakContinuous)
.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
.TypeText("Text without border.")
0
 
LVL 37

Expert Comment

by:Joanne M. Orzech
Comment Utility
Well - not knowing vb.net - I can only say that the macro I posted works on only the selected paragraph and puts the border on all sides (exactly what you asked for but not in .net).  See attached screenshot.  I can understand if our suggestions do not work for vb.net but I do not agree with your statements that they do not work at all and our comments did not address your issue.



2003-Border-Around-Paragraph.gif
0
 
LVL 59

Expert Comment

by:Chris Bottomley
Comment Utility
The requirement for para 1 was never stated and is easy to accomodate as below.

Chris
Sub addBorder()

Dim bord As Variant
 

    With ThisDocument.Paragraphs(1)

        For Each bord In Array(wdBorderLeft, wdBorderRight, wdBorderTop, wdBorderBottom)

            With .Borders(bord)

                .LineStyle = wdLineStyleSingle

                .LineWidth = wdLineWidth050pt

                .Color = wdColorAutomatic

            End With

            With .Borders

                .DistanceFromTop = 1

                .DistanceFromLeft = 4

                .DistanceFromBottom = 1

                .DistanceFromRight = 4

                .Shadow = False

            End With

        Next

    End With
 

End Sub

Open in new window

0
 
LVL 59

Expert Comment

by:Chris Bottomley
Comment Utility
The requirement for para 1 was never stated and is easy to accomodate as below.

Chris
Sub addBorder()

Dim bord As Variant
 

    With ThisDocument.Paragraphs(1)

        For Each bord In Array(wdBorderLeft, wdBorderRight, wdBorderTop, wdBorderBottom)

            With .Borders(bord)

                .LineStyle = wdLineStyleSingle

                .LineWidth = wdLineWidth050pt

                .Color = wdColorAutomatic

            End With

            With .Borders

                .DistanceFromTop = 1

                .DistanceFromLeft = 4

                .DistanceFromBottom = 1

                .DistanceFromRight = 4

                .Shadow = False

            End With

        Next

    End With
 

End Sub

Open in new window

0
 
LVL 59

Expert Comment

by:Chris Bottomley
Comment Utility
Apologies for the double post ... I don't know what happened though I was in the process of posting an objection as stated.

Chris
0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 37

Expert Comment

by:Joanne M. Orzech
Comment Utility
I also fail to see how your supposed solution creates a box around the entire phrase wellhole....
0
 
LVL 9

Author Comment

by:wellhole
Comment Utility
Oops... Looks like Chris' function would work, but JOrzech's still doesn't. All it does is put a line on the bottom of all text and not on just 1 paragraph, which I've done.
0
 
LVL 9

Author Comment

by:wellhole
Comment Utility
Well.... Chris' NEW function would, not his old one.
0
 
LVL 37

Expert Comment

by:Joanne M. Orzech
Comment Utility
Good job Chris.

And I'll be sure to keep an eye out for future questions from you wellhole....
0
 
LVL 9

Author Comment

by:wellhole
Comment Utility
JOrzech, I can't help it if you don't read the whole question. I wrote in plain english "I'm trying to just put it under "2009 Call Report"."
0
 
LVL 37

Expert Comment

by:Joanne M. Orzech
Comment Utility
I do not intend to argue the issue - I did read the whole question.  I am simply stating that most lines and paragraphs end with a paragraph mark.  Working on that assumption, I provided the macro to you which, if the words "2009 Call Report" were on one line with a paragraph mark at the end and you selected those words, the macro would work as you requested.

0
 
LVL 9

Author Comment

by:wellhole
Comment Utility
I'm too tired from working out this problem and I'd love not to do any kind of argument, but you do realize I'm generating the report with code, don't you? I don't have the option to select something and run a macro on it, unless somehow that's put into code as well.
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

I would like to show you some basics you can do with Mailings in MS Word. It´s quite handy feature you can use for creating envelopes, labels, personalized letters etc. First question could be what is this feature good for? Mailing can really he…
A few years ago I was very much a beginner at VBA, and that very much remains the case today.  I'll do my best to explain things as I go in the hope that other beginners can follow.  If you just want to check out a tool that creates a Select Case fu…
This video walks the viewer through the process of creating envelopes and labels, with multiple names and addresses. Navigate to the “Start Mail Merge” button in the Mailings tab: Follow the step-by-step process until asked to find the address doc…
This Experts Exchange video Micro Tutorial shows how to tell Microsoft Office that a word is NOT spelled correctly. Microsoft Office has a built-in, main dictionary that is shared by Office apps, including Excel, Outlook, PowerPoint, and Word. When …

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now