Thema Datum  Von Nutzer Rating
Antwort
08.11.2007 09:02:27 Timo
NotSolved
08.11.2007 11:19:30 Holger
NotSolved
09.11.2007 09:19:23 Timo
NotSolved
Blau Aw:Aw:Aw:Suche Hilfe - Laufnummer
09.11.2007 16:07:51 Holger
NotSolved
11.11.2007 08:22:20 Holger
NotSolved
12.11.2007 16:00:01 Timo
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
09.11.2007 16:07:51
Views:
966
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Aw:Suche Hilfe - Laufnummer
Hollo Timo,

lege in MS-Word ein Dokument an und öffne VBA. Im Projektfenster (i.Allg. links oben) findest du so etwas wie einen Verzeichnisbaum und darin eine Zeile mit „Project (Dein Dokument)“. Wenn du diese anklickst erhältst du eine Zeile mit „Microsoft Word Objekte“ und weiter darunter „ThisDocument“. Klickst du dieses doppelt an, wird das Code-Fenster geöffnet. Lege zum Test ein banales Programm an und speichere dein Dokument, z.B.
Sub Document_Close()
MsgBox "Schließen"
End Sub
Wenn du das Dokument schließt, wird das Programm ausgeführt, bevor es tatsächlich geschlossen wird.

Sei „X“ der Pfad zum Arbeitsverzeichnis auf dem Server. Setzt du keinen Server ein, sei es der Pfad zum Arbeitsverzeichnis auf dem Einzelplatzrechner (z.B. „C:\Vorlagen“). Sei „LfdNrVorlage1.Dat“ die Datei, in der die letzte verwendete Nummer gespeichert ist. Dann kannst du mit
Open “X\ LfdNrVorlage1.Dat“ For Input As #1
Input #1, LfdNr
Close #1
die gespeicherte Nummer in String-Variable „LfdNr“ holen.
Dazu muss die Datei natürlich existieren, sonst gibt es eine Fehlermeldung. Am Einfachsten legst du deshalb vorher mit einem eigenen Programm diese Datei an, z.B.:
Sub Dateiintitialisierung ()
Open “X\ LfdNrVorlage1.Dat“ For Output As #1
Write #1, “0”
Close #1
End Sub

Wenn du diese Nummer z.B. an eine bestimmte Stelle im Dokument einfügen willst, erstelle in der Vorlage eine Textmarke, z.B. mit dem Namen „Nummer“. Um die zu verwendende Nummer einzutragen, ist die gelesene zunächst um 1 zu erhöhen und wieder zu speichern. Insgesamt als einfache Lösung ergibt sich z.B.:

Sub Document_Close()
’Prüfung, ob das Dokument ordnungsgemäß abgeschlossen werden soll
a = MsgBox ("Dokument mit laufender Nummer versehen? ",”Laufende Nummer”, vbYesNo")
If a = vbNo Then Exit Sub ’d.h. Dokumentenbearbeitung wurde abgebrochen
Open “X\ LfdNrVorlage1.Dat“ For Input As #1 ’letzte Nummer holen
Input #1, LfdNr
Close #1
LfdNr = Trim(Str(Val(LfdNr) + 1)) ‘um 1 erhöhen und Leerzeichen entfernen
Open “X\LfdNrVorlage1.Dat“ For Output As #1 ‘verwendete Nummer speichern
Write #1, LfdNr
Close #1
ActiveDocument.Bookmarks("Nummer").Select ‘Textmarke ansteuern und LfdNr einsetzen
With Selection
.Collapse direction:=wdCollapseEnd
.InsertAfter LfdNr
End With
ActiveDocument.Name=LfdNr + ”_” + ActiveDocument.Name ‘z.B. LfdNr vor den Dokumentennamen setzen
ActiveDocument.Save ‘Dokument speichern
End Sub

Ich habe das Programm nicht getestet. Die Anpassung an deine Bedürfnisse solltest du selbst machen.
Viel Erfolg
Holger




Timo schrieb am 09.11.2007 09:19:23:

Hallo!

Erstmal danke für deine Antwort!
Da ich leider noch nicht viel erfahrung mit VBA habe würde mich Interessieren wie das genau aussieht mit "Sub Document_Close", kannst du mir da vielleicht ein beispiel schreiben?

Du schreibst:

'die nächste Nummer aus der Serverdatei holen und dem Dokument/Dokumentennamen vor der tatsächlichen Speicherung hinzufügen (ggf. unter Nutzung des FileSystemObject). '

Wie soll das aussehen? Wie kann ich die Nummer aus der Serverdatei hohlen? Also ich kenn mich da wirklich nicht gut aus und hoffe auf weitere unterstützung :)

MfG

Timo

Holger schrieb am 08.11.2007 11:19:30:

Hallo Timo,
ein zusätzliches Problem kann entstehen, wenn mehrere Nutzer gleichzeitig die Vorlage holen und einer von ihnen sie nicht verwendet. Denn dann kann tatsächlich eine Lücke in der Zahlenfolge entstehen.
Deshalb sollte die Nummernvergabe zweckmäßigerweise auf dem Server bei der Speicherung erfolgen. Dazu würde ich dort ein Datei anlegen, die die letzte benutzte oder die nächste zu nutzende Nummer enthält. In der "Sub Document_Close" (unter Microsoft Word Objekte - ThisDocument) kann man dann feststellen, ob das Dokument mit "Abbrechen" oder "Speichern" beendet wurde und im Falle, dass es gespeichert werden soll, die nächste Nummer aus der Serverdatei holen und dem Dokument/Dokumentennamen vor der tatsächlichen Speicherung hinzufügen (ggf. unter Nutzung des FileSystemObject).
Bei einem Ein-Platz-System kannst du die Datei auch auf dem Einzelrechner führen.
Ich habe das Programm nicht ausprobiert, hoffe aber, dass du damit klar kommen kannst.
Viel Erfolg
Holger

Timo schrieb am 08.11.2007 09:02:27:

Hallo zusammen!

Ich bin in der Ausbildung im 2ten Lehrjahr und habe folgende aufgabe bekommen:

In der Firma gibt es dokumente , z.B. Sonderfreigaben, die soganannte Laufnummern haben. Ich habe nun die aufgabe das wenn der Mitarbeiter (User) die Vorlage dieses Dokumentes öffnet die Aktuelle nummer angezeigt bekommt!
Das heißt ich muss aus einem anderen Dokument die nummer "hohlen" und am besten direkt um 1 erhöhen. Beide dokumente befinden sich auf einem Server!
Weitergehend muss sichergestellt sein das wenn der User das dokument öffnet und wieder schließt ohne es zu verwenden nicht die Nummer gespeichert wird und beim nächsten aufrufen wieder eine neue nummer angezeigt wird, und somit die alte nummer nicht gebraucht wurde und verloren geht!

Ich sitzte nun schon sehr lange an dieser aufgabe (4Wochen) und habe noch keine genaue lösung gefunden!

Der einzige link betreff Laufnummer mittels VBA ist folgener:

http://mypage.bluewin.ch/reprobst/WordFAQ/Kollerat.htm#Kollerat06

Das was dort drin steht funktioniert soweit wunderbar, dennoch ist das nicht die lösung!

Vielleicht kennt ihr ja schon eine fertige Software die soetwas macht, die zu kaufen ist auch kein problem , ich muss das programm dafür nicht unbedingt alleine schreiben ;)

Ich hoffe auf Schnelle antworten und bedanke mich schonmal im Vorraus!

MfG

Timo

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
08.11.2007 09:02:27 Timo
NotSolved
08.11.2007 11:19:30 Holger
NotSolved
09.11.2007 09:19:23 Timo
NotSolved
Blau Aw:Aw:Aw:Suche Hilfe - Laufnummer
09.11.2007 16:07:51 Holger
NotSolved
11.11.2007 08:22:20 Holger
NotSolved
12.11.2007 16:00:01 Timo
NotSolved