Avatar billede ktr1978 Nybegynder
08. februar 2012 - 15:20 Der 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".

Mvh

Kresten Trolle
Avatar billede tjp Mester
08. februar 2012 - 16:02 #1
Dur denne?:

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
Avatar billede ktr1978 Nybegynder
08. februar 2012 - 20:14 #2
Hej

Desværre ikke.

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.

Mvh

Kresten
Avatar billede tjp Mester
08. februar 2012 - 21:53 #3
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...
Avatar billede ktr1978 Nybegynder
09. februar 2012 - 07:05 #4
Hmm...

Det er lidt underligt. Jeg har nu også prøvet at ændre til "Overskrift 1", men der sker fortsat intet.
Avatar billede tjp Mester
09. februar 2012 - 10:29 #5
Ahh, du kører jo makroen fra Normal...

Prøv at ændre 'ThisDocument' til 'ActiveDocument' i linjen:

For Each par In ThisDocument.Paragraphs
Avatar billede ktr1978 Nybegynder
09. februar 2012 - 11:16 #6
Alletiders det løste problemet - tak for det.

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

Men tak for hjælpen.
Avatar billede ktr1978 Nybegynder
09. februar 2012 - 11:26 #7
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å.
Avatar billede ktr1978 Nybegynder
09. februar 2012 - 11:29 #8
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.
Avatar billede tjp Mester
09. februar 2012 - 13:41 #9
Hm, havde ikke lige set #8 før nu...

#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
Avatar billede ktr1978 Nybegynder
09. februar 2012 - 13:49 #10
Du skal også have 100 point for det sidste, så jeg laver lige en ny tråd.
Avatar billede tjp Mester
09. februar 2012 - 14:02 #11
Ok, mange tak. Lægger du et link?
Avatar billede ktr1978 Nybegynder
09. februar 2012 - 14:06 #12
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester