#1
|
|||
|
|||
Assign different heading styles for different paragraphs
Good morning all,
I allow myself to ask your help for a problem which, despite my research on the internet, does not find answers. I am introducing you my problem. I export from Excel a succession of paragraphs to a single bookmark of an openned Word document. These different paragraphs are structured as follows (illustrative text): A. Getting started (1). Please turn on your PC (2). Please wait for full boot (a). Option 1: ... (b). Option 2: ... B. Parameterization (1). etc ... (2). etc ... (3). etc .... Then, I wanted to know if it was possible to assign to each paragraph (A. ...; (1). ...; (a). ...) a heading style that I had already configured in my Word document (heading style without numbering because they are already present during export). I had started writing this piece of code: Code:
Dim Paragraph As Word.Paragraph Selection.GoTo What:=wdGoToBookmar, name:="Z1" With Selection For each Paragraph in Selection.Paragraphs Paragraphe.Style = ActiveDocument.Styles("ZStyle(1)") Next End with - If the paragraph begins with "A." or "B." etc ...; assign it heading style 1 - If the paragraph begins with "(1)." or "(2)." etc ...; assign it heading style 2 - If the paragraph begins with "(a)." or "(b)." etc ...; assign it heading style 3 In addition, there are may be empty lines between two paragraphs (I mean end of paragraph marks) which of course I do not want to assign a heading style. I hope I managed to be understandable. Do not hesitate to tell me if more precision is needed. I thank in advance all people who can help me. Have a good day |
#2
|
||||
|
||||
If the start texts are typed text and not outline numbers, the following will work
Code:
Sub Macro1() 'Graham Mayor - https://www.gmayor.com - Last updated - 01 May 2021 Dim oPara As Word.Paragraph Dim oRng As Range Dim vChar1 As Variant, vChar2 As Variant, vChar3 As Variant Dim iList As Integer Const strList1 As String = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" Const strList2 As String = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z" Const strList3 As String = "0,1,2,3,4,5,6,7,8,9" vChar1 = Split(strList1, ",") vChar2 = Split(strList2, ",") vChar3 = Split(strList3, ",") If ActiveDocument.Bookmarks.Exists("Z1") = True Then Set oRng = ActiveDocument.Bookmarks("Z1").Range For Each oPara In oRng.Paragraphs For iList = 0 To UBound(vChar1) If oPara.Range.Characters(1) = vChar1(iList) And _ oPara.Range.Characters(2) = Chr(46) Then oPara.Style = "Heading 1" GoTo Skip End If Next iList For iList = 0 To UBound(vChar2) If oPara.Range.Characters(2) = vChar2(iList) And _ oPara.Range.Characters(1) = Chr(40) Then oPara.Style = "Heading 3" GoTo Skip End If Next iList For iList = 0 To UBound(vChar3) If oPara.Range.Characters(2) = vChar3(iList) And _ oPara.Range.Characters(1) = Chr(40) Then oPara.Style = "Heading 2" GoTo Skip End If Next iList Skip: Next oPara End If Set oRng = Nothing Set oPara = Nothing End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
||||
|
||||
I often find the Autoformat command to be useful for this type of task.
What happens to your document styling if you press Ctrl-Alt-K
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#4
|
|||
|
|||
Hello everyone,
First, thank you very much for your help and your involvement for this problem. Concerning your code @gmayor, I tried it and add two lines : Code:
If oPara.range.characters(1) = Chr(13) then GoTo Skip End if So a huge thank you for that ! Now, I'm going to read each line of your code in order to understand and reuse them for a futur project. I also tried the shortcut : Ctrl-Alt-K And this one works but not as expected for my document which have a particular set-up. Thank you again for your help and all the best ! |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Formatting all paragraphs based on pre defined styles | afif | Word VBA | 0 | 07-26-2019 06:18 AM |
Add a heading for each paragraph depending on the previous paragraphs numbering | herman | Word | 4 | 07-15-2019 09:48 PM |
Heading and the paragraphs grouped together in MS Word 2007 | Volle13 | Word | 8 | 12-05-2016 06:14 PM |
Styles: Heading 4 stuck at same heading number | Hallet | Word | 1 | 05-31-2012 02:37 PM |
How to have two styles for heading 1? | Jamal NUMAN | Word | 3 | 07-24-2011 04:33 PM |