Avatar billede dransfeldt Nybegynder
01. november 2011 - 11:53 Der er 3 kommentarer og
1 løsning

Nummerering i word 2007 med macro

jeg er ved at lave en macro i word der skal sætte en linie ind i et dokument.
Mår macroen afspilles skal den indsætte en linie med nummer 1.
Næste gang macroen afspilles skal den lægge 1 til dvs linine skal nummereres med 2. også videre.

Linierne kan sættes ind vilkårligt, både før og efter den foregående, men uanset placering skal nummeret være 1 højere end sidst indsatte.
Ligeledes kan det være at nogle linier og numre slettets, men selv om f.eks 4 er sat ind, og slettet igen inden macroen afspilles, må den ikke anvendes igen, men indsætte 5.

Dokumentet kan f.eks komme til at blive nummereret sådan:

6 xx
1 xx
2 xx
4 xx
5 xx

Dvs. det er ikke placeringe der er vigtig men rækkefølgen de bliver indsat

Nogen forslag til macroen?

Mvh
Ole M D
Avatar billede claes57 Ekspert
01. november 2011 - 12:51 #1
jeg ville gøre dette
til et givent doc skal makroen oprette (hvis ikke findes i forvejen) en fil med samme navn, bare type .ini (fx)
filen styres af din nummermakro, som læser første linje, lægger 1 til tallet, overskriver filen og skriver tallet i dok.

jeg har engang lavet noget lignende til autonummerering af breve, og det virker fint.
Avatar billede Lene Fredborg Ekspert
01. november 2011 - 13:11 #2
Kommentar til Claes57: Da nummereringen kun skal bruges i det ene dokument, som jeg forstår det, synes jeg, at det er enklere at gemme nummeret i dokumentet selv i stedet for i en separat fil, selv om det også ville være en mulighed.

Jeg ville bruge en DocVariable i selve dokumentet til at styre nummeret. Jeg har lavet en makro, som gør det - kommentarer inkluderet i selve makroen. Makroen opretter selv variablen ved første brug:


Sub InsertNuberedParagraph()
    Dim strVarName As String
    Dim nVarValue As String
   
    On Error GoTo ErrorHandler
   
    strVarName = "Number"
       
    With ActiveDocument.Variables(strVarName)
        'Get value to use = current value + 1
        nVarValue = .Value + 1
        'change DocVariable value
        .Value = nVarValue
    End With
   
    'Insert paragraph with number nValue
    With Selection
        'collapse selection at end op last para in selection
        .End = .Paragraphs.Last.Range.End
        .Collapse wdCollapseEnd
        .InsertParagraphAfter
       
        .Collapse wdCollapseStart
.Select
        .Range.Text = nVarValue & " "
        'Change style below as needed
        .Style = ActiveDocument.Styles(wdStyleBodyText)
        'Position cursor now after inserted number + space
        .MoveRight Len(nVarValue) + 1
    End With
   
    Exit Sub
'=========================
ErrorHandler:
    If Err.Number = 5825 Then
        'Variable does not exist - add and set value to 1
        ActiveDocument.Variables.Add strVarName, 1
        nVarValue = 1
        Resume Next
    End If
End Sub
Avatar billede dransfeldt Nybegynder
01. november 2011 - 13:43 #3
Tak til lene-fredborg

Det var lige den løsning jeg skulle bruge. Det virker perfekt.

Kan du oprette et svar så jeg kan tildele dig point?

Mvh

Ole M D
Avatar billede Lene Fredborg Ekspert
01. november 2011 - 13:51 #4
Velbekomme. Svar kommer her.
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