Hi All,
ich habe das vor ein paar Jahren auch mal gemacht. Damals habe
ich das so gelöst:
Die Nr. wird hier extern in einer Textdatei gespeichert. Nur so ist
gewährleistet, dass nicht gleichzeitig, während man die Rechnung
schreibt, ein anderer Nutzer im Netzwerk auch auf die Vorlage
zugreift und eine Rechnung mit gleicher Nr. erwischt. Die
Dateiendung .lnr ist hier frei erfunden und steht für laufende Nr.
Hier der Code für Modul "Diese Arbeitsmappe":
Private Sub Workbook_Open()
Set NrPos = Range("C3") 'Zelle, wo die Nr. eingefügt werden soll
Pfad = ThisWorkbook.Path
'Alternativ: Pfad="Ordner\Subordner" 'Das letzte Zeichen darf nicht "\"
sein.
Datei = Left(ThisWorkbook.Name, InStr(1, ThisWorkbook.Name, ".")
- 1)
'Alternativ: Datei = "Dateiname"
Datei = Datei & ".lnr" 'ausgedachte Dateiendung
'Datei kann im Explorer mit Editor oder Notepad geöffnet werden.
'Prüft ob wirklich von Vorlage geöffnet
dname = ThisWorkbook.Name
If Right(dname, 4) = ".xlt" Or Right(dname, 5) = ".xltx" Then
'Alternativ: If ThisWorkbook.Name = "MeineDateiVorlage.xlsx" then
On Error GoTo Fehler
'Öffnet lnr-Datei und liest diese aus.
Open Pfad & "\" & Datei For Input As #1
Input #1, Nr
Close #1
'zählt die Nr. hoch und schreibt sie ins Formular
Nr = Nr + 1
NrPos.Value = Nr
NrPos.NumberFormat = "0000"
'Speichert die neue Nr. wieder in der lnr-Datei
Open Pfad & "\" & Datei For Output As #1
Print #1, Nr
Close #1
End If
'Beendet den Code da nachfolgender nur sehr selten ausgeführt
wird.
Exit Sub
'wenn lnr-Datei nicht existent wird sie mit Standardnr. 0 erstellt
Fehler:
Open Pfad & "\" & Datei For Output As #1
Print #1, 0 '0 = Standardnr. von der hochgezählt werden soll.
Close #1
Resume Next
End Sub
Das Ganze ist natürlich nur ein Behelf. In der Regel wird für
das Schreiben von Rechnungen in Firmen ein IDW-Zertifiziertes
oder zumindest GoB-Testiertes ERP-System vorausgesetzt. Oder in
Vereinen ein Datenbankprogramm wie Access genutzt.
Gruß Mr. K.