Link to home
Create AccountLog in
Visual Basic.NET

Visual Basic.NET

--

Questions

--

Followers

Top Experts

Avatar of wellhole
wellhole

How do I add a border to a paragraph in Ms Word?
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

Zero AI Policy

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


Avatar of Joanne M. OrzechJoanne M. Orzech๐Ÿ‡บ๐Ÿ‡ธ

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


ASKER CERTIFIED SOLUTION
Avatar of Chris BottomleyChris Bottomley๐Ÿ‡ฌ๐Ÿ‡ง

Link to home
membership
Log in or create a free account to see answer.
Signing up is free and takes 30 seconds. No credit card required.
Create Account

Avatar of wellholewellhole

ASKER

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.")

Avatar of Joanne M. OrzechJoanne M. Orzech๐Ÿ‡บ๐Ÿ‡ธ

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

Reward 1Reward 2Reward 3Reward 4Reward 5Reward 6

EARN REWARDS FOR ASKING, ANSWERING, AND MORE.

Earn free swag for participating on the platform.


Avatar of Chris BottomleyChris Bottomley๐Ÿ‡ฌ๐Ÿ‡ง

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


Avatar of Chris BottomleyChris Bottomley๐Ÿ‡ฌ๐Ÿ‡ง

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


Avatar of Chris BottomleyChris Bottomley๐Ÿ‡ฌ๐Ÿ‡ง

Apologies for the double post ... I don't know what happened though I was in the process of posting an objection as stated.

Chris

Free T-shirt

Get a FREE t-shirt when you ask your first question.

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


Avatar of Joanne M. OrzechJoanne M. Orzech๐Ÿ‡บ๐Ÿ‡ธ

I also fail to see how your supposed solution creates a box around the entire phrase wellhole....

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.

Well.... Chris' NEW function would, not his old one.

Reward 1Reward 2Reward 3Reward 4Reward 5Reward 6

EARN REWARDS FOR ASKING, ANSWERING, AND MORE.

Earn free swag for participating on the platform.


Avatar of Joanne M. OrzechJoanne M. Orzech๐Ÿ‡บ๐Ÿ‡ธ

Good job Chris.

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

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"."

Avatar of Joanne M. OrzechJoanne M. Orzech๐Ÿ‡บ๐Ÿ‡ธ

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.


Free T-shirt

Get a FREE t-shirt when you ask your first question.

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


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.
Visual Basic.NET

Visual Basic.NET

--

Questions

--

Followers

Top Experts

Visual Basic .NET (VB.NET) is an object-oriented programming language implemented on the .NET framework, but also supported on other platforms such as Mono and Silverlight. Microsoft launched VB.NET as the successor to the Visual Basic language. Though it is similar in syntax to Visual Basic pre-2002, it is not the same technology,