01. november 2011 - 11:53Der 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
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.
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
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.