17. december 2002 - 17:44Der er
20 kommentarer og 1 løsning
Makro til autonummerering i dokument
Jeg skal have lavet en faktura skabelon og vil gerne have et faktura nr. der nummereres automatisk med et fortløbende nr. Evt. vil jeg også meget gerne kunne gemme fakturaen som dette nr.
Her er en kode, der giver dig løbende fakturanumre:
Den skal kopieres ind i et almindeligt modul i din skabelon.
Sub AutoNew() Dim FakturaNr As Integer
'Henter fakturanummeret fra en textfil (nummeret står på først linie) Open "c:\Fakturanummer.txt" For Input As #1 Input #1, FakturaNr Close #1
'Indsætter fakturanummeret ved bogmærket "Fakturanummer" i dokumentet If ActiveDocument.Bookmarks.Exists("Fakturanummer") = True Then ActiveDocument.Bookmarks("Fakturanummer").Select End If
'Tæller op til næste faktura FakturaNr = FakturaNr + 1
'Gemmer det nye fakturanumer i textfilen Open "c:\Fakturanummer.txt" For Output Access Write As #1 Write #1, FakturaNr Close #1
End Sub
Koden tager ikke højde for, at man måske fortryder fakturaoprettelsen. Denne lille udfordring kunne klares ved at vente med at gemme det nye fakturanummer indtil brugeren f.eks, trykker på en knap på værktøjslinien, der gemmer fakturaen og også gemmer det nye nummer.
Her er så hele koden (med knapmuligheden, der gemmer din faktura på fakturannummeret som navn og som tæller fakturanummeret op):
Public FakturaNr As Integer Sub AutoNew() Dim FakturaNr As Integer
'Henter fakturanummeret fra en textfil (nummeret står på først linie) Open "c:\Fakturanummer.txt" For Input As #1 Input #1, FakturaNr Close #1
'Indsætter fakturanummeret ved bogmærket "Fakturanummer" i dokumentet If ActiveDocument.Bookmarks.Exists("Fakturanummer") = True Then ActiveDocument.Bookmarks("Fakturanummer").Select End If End Sub Sub GemFaktura() ' sæt denne makro på en knap
Ja - du skal selv lave Fakturanummer.txt og skrive f.eks. "1" på første linie
Koden skal kopieres ind i et modul i skabelonen - altså
Åbn skabelonen (det skal være en .dot-fil) Tryk Alt+F11 Vælg skabelonen i billedet til venstre (det er ligesom en stifiner) Vælg Insert/Module
Kopier koden ind i modulet
Opret bogmærket, der SKAL hedde "Fakturanummer"
Kkoden virker kun, når du laver et nyt dokument på baggrund af skabelonen - alså når du har gemt din skabelon i skabelonbiblioteket (der hvor de andre skabeloner er placeret) og starter den via Filer/Ny
Ups - jeg har jo glemt koden for indsættelse af fakturanummeret :-(
Den er If ActiveDocument.Bookmarks.Exists("Fakturanummer") = True Then ActiveDocument.Bookmarks("Fakturanummer").Select Selection.TypeText FakturaNr ' Den nye kode End If
Hej igen, jeg sendte ikke lige skabelonen, da jeg havde det til at virke et øjeblik, men det viser sig at den ikke kan indsætte fakturanummeret, når skabelonen er låst(altså gemt med kun de indsatte formularer tilgængelige). Derimod virker det fint når den ikke er låst.
Nogen ideer?
Men ellers er pointene vist ærligt fortjent rvm... tak for hjælpne, håber evt. du kan hjælpe mig med det sidste problem...
Desuden kan jeg ikke umiddelbart ændre fakturanummeret fra 0 til 10000, uden at dokumentet gemmes som "0" og nummeret i Fakturanummeretændres til 1 og ikke som ventet til 10001!!- Mystisk
Angående skrivebskyttelse så brug denne kode til at låse dokumentet op
If ActiveDocument.ProtectionType <> wdNoProtection Then ActiveDocument.Unprotect End If
og denne kode til at låse det igen, når fakutranummeret er indsat
If ActiveDocument.ProtectionType = wdNoProtection Then ActiveDocument.Protect wdAllowOnlyFormFields, True End If
Angående fakturanummert, så skal det ændres i fakturanummer.txt. hvis dette ikke hjælper så skal variablen dimensioneres til et større tal f.eks. Dim FakturaNr As Long
Jeg takker for hjælpen- det virker nu - bortset fra det med fakturanummeret stadig ændres til 0 når dokumentet gemmes, selvom jeg har skiftet variabel type og ændret i txt filen.
Vil man i sådan en tæller som denne kunne gøre så dan starter og slutter et sted og så printer det ud og skifter tal og printer igen, som en slags LOOP??
Synes godt om
Ny brugerNybegynder
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.