08. februar 2012 - 15:20Der er
11 kommentarer og 1 løsning
Makro til indsættelse af tom linie med særlig typografi før tekstafsnit, der er af en særlig typografi
Jeg har brug for en makro i Word, der kan indsætte en blank linie (altså blot et linieskift) foran alle de tekstafsnit, der bruger typografierne "Normal" og "Normal2" og "Petit".
Makroen skal derefter (eller samtidig med) formatere disse indsatte tomme linier til at have typografien "Normal3".
Jeg har på forhånd defineret typografierne "Normal", "Normal2", "Petit" og "Normal3".
Sub InsertNormal3BeforeNormalPetit() Dim par As Paragraph
For Each par In ThisDocument.Paragraphs Debug.Print par.Style If par.Style = "Normal" Or par.Style = "Normal2" Or par.Style = "Petit" Then par.Range.InsertParagraphBefore par.Previous.Style = "Normal3" End If Next End Sub
Jeg får en fejlmeddelelse op om, at "Der ikke findes et element med det angivne navn." Hvis jeg debug'er ser det ud til, at det er linien "par.Previous.Style = "Normal3"", der er problemet.
Hvis jeg så fjerner den pågældende linie, der skulle formatere til typografien "Normal3", ville jeg forvente, at der ville blive indsat en tom linie før et afsnit, der er skrevet med typografien Normal, Normal2 eller petit, men det sker heller ikke.
Jeg håber, du - eller en anden - kan komme op med et nyt forslag.
Mærkeligt. Det virker hos mig på begge pc'er - bortset fra 'normal3' som jeg ikke har defineret (og derfor også får fejlen "Der ikke findes et element med det angivne navn"). Men hvis jeg skriver 'overskrift 2' i stedet, så får jeg et afsnit med den typografi sat ind foran...
Når du nævner, at jeg kører makroen fra Normal, giver det mig anledning til at spørge, hvor jeg ellers kunne køre den fra? (Beklager, hvis det er et dumt spørgsmål).
Et supplerende ønske kunne være, hvis makroen efterfølgende kunne undersøge, om der er mere end én "Normal3"-linie mellem "Normal", "Normal2" og "Petit" afsnittene, og hvis der er det sørge for, at der kun er én Normal3 linie - den skal altså slette "overflødige" "Normal3" linier.
Jeg skal gerne give ekstra 100 point for en besvarelse af det også.
Eller rettere, de overflødige "Normal3" afsnit skal laves om til enten "Normal", "Normal2" eller "Petit" afhængig af, om det er "Normal", "Normal2" eller "Petit", der er det næste afsnit.
#6: Hvis en makro er gemt i Normal.dotm kan den ses og bruges i alle normaltoprettede Word-dokumenter, hvilket er godt hvis makroen er generelt anvendelig. Men den kan også være gemt i et specifikt dokument og derfor kun synligt dér, hvilket er smart, hvis den kun skal bruge ifm det dokument.
#7: Følgende sletter tomme dubletafsnit:
Sub FjernTommeNormal3Dubletter() Dim par As Paragraph For Each par In ActiveDocument.Paragraphs If Not (par.Previous Is Nothing) Then If par.Previous.Style = "Normal3" And par.Style = "Normal3" Then If par.Previous.Range.Text = vbCr Then par.Previous.Range.Delete ElseIf par.Range.Text = vbCr Then par.Range.Delete End If End If End If Next End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.