Avatar billede llcoolj Nybegynder
17. december 2002 - 17:44 Der 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.

På forhånd tak
Avatar billede hcma Novice
17. december 2002 - 21:45 #1
Kan du ikke bruge den der er i Excel som udgangspunkt ??
Den har de features du efterlyser.
Avatar billede rvm Nybegynder
17. december 2002 - 21:55 #2
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.

Husk at opretter bogmærket "Fakturanummer" :-)
Avatar billede rvm Nybegynder
17. december 2002 - 22:00 #3
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

'Gemmer fakturaen
ActiveDocument.SaveAs "c:\" & FakturaNr & ".doc"

'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

Held og lykke
Avatar billede llcoolj Nybegynder
17. december 2002 - 23:23 #4
kanon rvm- men kan du evt. give mig lidt mere instruktion, da jeg ikke har arbejdet ret meget med dette før...

1).Skal jeg selv lave Fakturanummer.txt

2). Hvor skal denne kode kopieres ind henne?


Ekstra:
3). Er det muligt at fortælle når man ønsker at gemme skal den foreslå det fakturanummer også?
Avatar billede llcoolj Nybegynder
17. december 2002 - 23:24 #5
Altså som filnavn...
Avatar billede llcoolj Nybegynder
18. december 2002 - 00:02 #6
Ok- det er også det den gør- kanon, men jeg kan ikke umiddelbart få den til at sætte nr fra txt fil ind på bestemt bogmærke....
Avatar billede llcoolj Nybegynder
18. december 2002 - 00:14 #7
Har oprettet bogmærke... Hjælp!!!!
Avatar billede rvm Nybegynder
18. december 2002 - 09:21 #8
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
Avatar billede llcoolj Nybegynder
18. december 2002 - 10:57 #9
Det spiller max med at lave en fortløbende nummer og gemme de oprettede faktura. Men jeg kan ikke få vist fakturanummeret i bogmærket.

Har forsøgt at indsætte et bogmærke, men der sker ikke noget.

Har også indsat et tekstfelt hvor jeg skrev afspilning af makroen ved indgang på bogmærket "Fakturanummer"- how else???
Avatar billede llcoolj Nybegynder
18. december 2002 - 10:59 #10
Er det select kommandoen der indsætter den hentede værdi fra txt dokumentet i bogmærket?
Avatar billede rvm Nybegynder
18. december 2002 - 11:03 #11
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
Avatar billede llcoolj Nybegynder
18. december 2002 - 11:38 #12
:-) - syntes nok den så lidt mystisk ud, men kender ikke VB, så var ikke helt sikker..,.
Avatar billede llcoolj Nybegynder
18. december 2002 - 11:47 #13
Hvad gør jeg forkert- den smider en popup med "Can't execute in break mode".
Ved debug kan jeg se at det er den nye linie den går galt i.
Avatar billede llcoolj Nybegynder
18. december 2002 - 11:54 #14
Nu har jeg fjernet udførslen af AutoNew makroen fra alle tekstfelter og så kommer problemet heller ikke, men der sker heller ikke noget.
Avatar billede rvm Nybegynder
18. december 2002 - 12:36 #15
"Can't execute in break mode". kommer, når du prøver at køre en kode, der kører allerede.

Send lige skabelonen til mig, så kikker jeg den efter i sømmene *S*

rvejemad@sca.csc.com
Avatar billede llcoolj Nybegynder
18. december 2002 - 13:18 #16
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...
Avatar billede llcoolj Nybegynder
18. december 2002 - 13:28 #17
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
Avatar billede rvm Nybegynder
18. december 2002 - 13:37 #18
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
Avatar billede llcoolj Nybegynder
18. december 2002 - 15:40 #19
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.
Avatar billede rvm Nybegynder
18. december 2002 - 16:00 #20
Slet

"Dim FakturaNr As Integer"

og sørg for at

"Public FakturaNr As Integer" står helt øverst i dit modul
Avatar billede yearr Nybegynder
01. oktober 2007 - 12:09 #21
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??
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

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