Solved

Macro to replace bullet char with bullet style and keep paragraph text bold

Posted on 2007-03-19
4
2,614 Views
Last Modified: 2008-01-09
Word 2003 macro
I'm replacing a bullet char with the List Bullet Style.  My macro works, but the text of the paragraph is bold.  After I run my macro the text is no longer bold.  Can you show me how to change the macro to keep the paragraph text bold?
Sub ConvertBulletChar()
    Const BulletStyle As String = "List Bullet"
    Dim Para As Paragraph
    Dim BulletChar As String
    Dim s As String
   
    BulletChar = Chr$(149)
   
    With ActiveDocument
        For Each Para In .Paragraphs
            With Para
                s = Mid$(.Range.Text, 1, 1)
                If InStr(1, BulletChar, s) Then
                    .Style = BulletStyle
                                       
                End If
            End With
        Next
    End With
End Sub
0
Comment
Question by:phil1429
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 

Expert Comment

by:DenisMLawlor
ID: 18752532
Hi,

I think the change is to do with the format of the ListBullet style. I suggest you go to Format, Style and then check the settings for List Bullet Style, and change formatting to bold.

Hope this helps

Denis
0
 
LVL 7

Accepted Solution

by:
gbahri earned 250 total points
ID: 18754093
Hi phil429,

Here is a code that replaces bullet char and apply Bullet list without changing the formatting of paragraph.

===========================================================================
Sub ConvertBulletChar()
    Const BulletStyle As String = "List Bullet"
    Dim Para As Paragraph
    Dim BulletChar As String
    Dim s As String
   
    BulletChar = Chr$(149)
   
    With ActiveDocument
        For Each Para In .Paragraphs
            With Para
                s = Mid$(.Range.Text, 1, 1)
                If InStr(1, BulletChar, s) Then
                    .Range.Characters.Item(1).Delete    ' Removes 1st char of Paragraph chr(149)
                    .Range.ListFormat.ApplyListTemplate ListTemplate:=ListGalleries( _
        wdBulletGallery).ListTemplates(1), ContinuePreviousList:=False, ApplyTo:= _
        wdListApplyToWholeList, DefaultListBehavior:=wdWord9ListBehavior  ' Apply bullet list
                                     
                End If
            End With
        Next
    End With
End Sub

===========================================================================

Hope, this serves your purpose,

thanks,

GBahri

0
 

Author Comment

by:phil1429
ID: 18756553
That's great and I like how you got rid of the original bullet.  I was removing it later with much less finesse.  My final job on these bullets is to change the format.  Now, this part of my macro removes the bold text of the paragraph.  Any more great ideas?  Also, this document comes from Crystal Reports.  I can have the designer in Crystal do something different with the bullets.  Should I ask for the bullets as an asterisk and take advantage of autoformatting?

Sub SetBulletStyle()

Dim oLT As ListTemplate
Dim oLL As ListLevel

    For Each oLT In ActiveDocument.ListTemplates
    With oLT
   
    For Each oLL In oLT.ListLevels
        If oLL.NumberStyle = wdListNumberStyleBullet Then
            With oLL
                .NumberFormat = ChrW(61607)
                .TrailingCharacter = wdTrailingTab
                .NumberStyle = wdListNumberStyleBullet
                .NumberPosition = InchesToPoints(0)
                .Alignment = wdListLevelAlignLeft
                .TextPosition = InchesToPoints(0.25)
                .TabPosition = InchesToPoints(0.25)
                .ResetOnHigher = 0
                .StartAt = 1
                .Font.Name = "Wingdings"
                .LinkedStyle = "List Bullet"
            End With
        End If
    Next oLL
    Next oLT

End Sub
0
 

Author Comment

by:phil1429
ID: 18756865
I got it.  I just left out  the .LinkedStyle = "List Bullet" line, but any improvements would be appreciated.

Sub SetBulletStyle()

Dim oLT As ListTemplate
Dim oLL As ListLevel

    For Each oLT In ActiveDocument.ListTemplates
    For Each oLL In oLT.ListLevels
        If oLL.NumberStyle = wdListNumberStyleBullet Then
            With oLL
                .NumberFormat = ChrW(61607)
                .TrailingCharacter = wdTrailingTab
                .NumberStyle = wdListNumberStyleBullet
                .NumberPosition = InchesToPoints(0)
                .Alignment = wdListLevelAlignLeft
                .TextPosition = InchesToPoints(0.25)
                .TabPosition = InchesToPoints(0.25)
                .ResetOnHigher = 0
                .StartAt = 1
                .Font.Name = "Wingdings"
            End With
        End If
    Next oLL
    Next oLT

End Sub
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It is often necessary in this forum and others to illustrate Word fields as text with the field delimiters replaced with the curly brackets that the delimiters resemble when field codes are being displayed on the document. This means that the text c…
This article shows how to get a list of available printers for display in a drop-down list, and then to use the selected printer to print an Access report or a Word document filled with Access data, using different syntax as needed for working with …
In this video, we show how to convert an image-only PDF file into a PDF Searchable Image file, that is, a file with both the image (typically from scanning) and text, which is created in an automated fashion with Optical Character Recognition (OCR) …
Office 365 is currently available in five editions. Three of them are for business use: Office 365 Business Essentials, Office 365 Business, and Office 365 Business Premium. Two of them are for home/personal use: Office 365 Home and Office 365 Perso…

624 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