Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1044to1048
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
laufende Nummer vergeben
28.01.2009 09:32:00
Frank
Hallo Leute,
da mir bisher immer super geholfen wurde wende ich mich mal wieder an Euch mit einem für mich nicht lösbaren Problem. Habe im Archiv schon rund 2 Stunden zugebracht da es schon viele Beiträge zum Thema gibt, bin aber leider nicht fündig geworden ein paar Ansätze hab ich gefunden aber eben nicht das was ich suche.
Nun mal zum Problem: Ich möchte eine laufende Nummer vergeben lassen. Diese soll ab einer bestimmten Zahl beginnen und beim öffnen meiner Vorlage (als .xlt gespeichert) automatisch um eins hochgezählt werden so dass keine Doppelvergabe stattfinden kann. Diese neue Nummer muss dann in die xlt. zurückgeschrieben werden um beim neuen öffnen wieder hochgezählt werden zu können. Danach wird die Arbeitmappe per Makro an einem bestimmten Ort unter einem bestimmten Namen gespeichert und gedruckt. Dies hab ich schon mit eurer Hilfe realisieren können. Natürlich darf beim erneuten öffnen dieser Mappe dann die Nummer nicht verändert werden.
Ich hoffe, dass Ihr mit meiner Erklärung klarkommt und wisst was ich meine.
folgend der Code zum Speichern und drucken vllt. könnt Ihr den gebrauchen.
Danke im voraus
Frank

Private Sub CommandButton1_Click()
End Sub



Private Sub CommandButton2_Click()
Const SpeicherPfad = "D:\Rapporte\"
Const bytSek As Byte = 1 'Anzahl Sekunden
Dim strFileName As String
Dim objWSH As Object
Dim intMeldung As Integer
If Range("Z5") = "" Then
MsgBox "Bitte Feld Bemerkungen prüfen"
Else
strFileName = SpeicherPfad & Range("C6") & Range("D6") & "-" & _
Range("F9") & "-" & Range("Q6") & ".xls"
ActiveWorkbook.SaveAs strFileName
'Für die Meldungsbox
Set objWSH = CreateObject("WScript.Shell")
intMeldung = objWSH.Popup("", bytSek, "Datei gespeichert unter " & strFileName)
Set objWSH = Nothing
End If
End Sub



Private Sub Drucken_Click()
ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True
End Sub


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: laufende Nummer vergeben
28.01.2009 13:46:09
fcs
Hallo Frank,
nachfolgende Prozedur muss du in der XLT-Datei im VBA-Editor unter DieseArbeitsmappe einfügen.
Die Namen von Verzeichnis und Vorlagedatei muss du ggf. anpassen.
Das Makro ist unter Excel 2003 erstellt. Es wird automatisch ausgeführt wenn eine neue Datei geöffnet wird. Sobald die Datei einmal gespeichert ist wird der If-Teil übersprungen, weil die Path-Information jetzt nicht mehr leer ist.
Gruß
Franz

Private Sub Workbook_Open()
Dim NrAlt As Long, NrNeu As Long, wbTemplate As Workbook
Dim strTemplate As String, strPfadVorlage As String
'  MsgBox "Pfad: " & ActiveWorkbook.Path 'Testzeile
If ActiveWorkbook.Path = "" Then 'Datei wurde noch nicht gespeichert
'Verzeichnis mit der Vorlage
'    strPfadVorlage = "C:\Lokale Daten\lokalevorlagen\"
'oder wenn Vorlage im Vorlagen-Verzeichnis abgelegt
strPfadVorlage = Application.TemplatesPath
'oder wenn Vorlage in einem Unterverzeichnis des Vorlagen-Verzeichnis
'    strPfadVorlage = Application.TemplatesPath & "Excel\"
'Name der Musterdatei
strTemplate = "MusterDatei_SerienNummer.xlt"
'letzte Seriennummer auslesen
NrAlt = Me.Worksheets(1).Range("F2").Value
NrNeu = NrAlt + 1
'    MsgBox "Neue Datei" 'Testzeile
'neue Nr. eintragen
Me.Worksheets(1).Range("F2").Value = NrNeu
'Vorlagen Datei öffnen
Application.ScreenUpdating = False
Application.EnableEvents = False
Set wbTemplate = Application.Workbooks.Open(Filename:=strPfadVorlage & strTemplate)
'Neue Nr. im Template eintragen
wbTemplate.Worksheets(1).Range("F2").Value = NrNeu
Application.DisplayAlerts = False
'Datei wieder als Template speichern
wbTemplate.SaveAs Filename:=strPfadVorlage & strTemplate, FileFormat:=xlTemplate
Application.DisplayAlerts = True
wbTemplate.Close
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End Sub


Anzeige
@Franz ich probier's Danke erst mal
28.01.2009 13:54:00
Frank
melde mich wenn's klappt
Gruß Frank
@ Franz kriegs nicht zum laufen
28.01.2009 16:12:16
Frank
Hallo Franz,
habe die untenstehenden Anpassungen gemacht, das kann so aber nicht korrekt sein, da nix passiert.
Habe die Prozedur wie beschrieben in "Diese Arbeitsmappe " der .xlt mit Name "Vorlage" kopiert. Die letzte vergebene Nummer hab ich in F9 des Tabellenblattes "Rapport" eingetragen denn dort soll dann auch die hochgezählte Nummer stehen. dann hab ich die Datei gespeichert und beim erneuten öffnen passiert dann wie gesagt garnix.
Der Pfad für Vorlage und neu abgespeicherter Datei ist gleich. Speichern erfolgt über das Makro welches ich im ersten Posting eingefügt habe. Wär schön wenn Du da mal drüberschauen würdest.
Gruß Frank

Private Sub Workbook_Open()
Dim NrAlt As Long, NrNeu As Long, wbTemplate As Workbook
Dim strTemplate As String, strPfadVorlage As String
'  MsgBox "Pfad: " & ActiveWorkbook.Path 'Testzeile
If ActiveWorkbook.Path = "D:\Mannheim\Selleng\Mannheim\Rapporte\" Then 'Datei wurde noch  _
nicht gespeichert
'Verzeichnis mit der Vorlage
strPfadVorlage = "D:\Mannheim\Selleng\Mannheim\Rapporte\"
'oder wenn Vorlage im Vorlagen-Verzeichnis abgelegt
'strPfadVorlage = Application.TemplatesPath
'oder wenn Vorlage in einem Unterverzeichnis des Vorlagen-Verzeichnis
'    strPfadVorlage = Application.TemplatesPath & "Excel\"
'Name der Musterdatei
strTemplate = "Vorlage.xlt"
'letzte Seriennummer auslesen
NrAlt = Me.Worksheets(2).Range("F9").Value
NrNeu = NrAlt + 1
'    MsgBox "Neue Datei" 'Testzeile
'neue Nr. eintragen
Me.Worksheets(2).Range("F9").Value = NrNeu
'Vorlagen Datei öffnen
Application.ScreenUpdating = False
Application.EnableEvents = False
Set wbTemplate = Application.Workbooks.Open(Filename:=strPfadVorlage & strTemplate)
'Neue Nr. im Template eintragen
wbTemplate.Worksheets(2).Range("F9").Value = NrNeu
Application.DisplayAlerts = False
'Datei wieder als Template speichern
wbTemplate.SaveAs Filename:=strPfadVorlage & strTemplate, FileFormat:=xlTemplate
Application.DisplayAlerts = True
wbTemplate.Close
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End Sub


Anzeige
AW: @ Franz kriegs nicht zum laufen
28.01.2009 17:18:43
fcs
Hallo Frank,
XLT-Dateien (Vorlagen) werden in Excel üblicherweise über das Menü Datei--Neu geöffnet oder direkt aus dem Explorer heraus.
Excel öffnet dann die Datei mit einem provisorischen Namen + Zählziffer (z.B. Mappe1, Mappe2 usw.).
Zu diesem Zeitpunkt hat die aktive Arbeitsmappe noch keine Informationen über den Pfad.
Das hatte ich in meinem Makro dann ausgewertet, um zu steuern, ob beim Öffnen der Datei eine neue Nummer generiert wird oder nicht.
Wenn du die XLT-Datei direkt öffnest (z.B. Menü-Datei-öffnen) dann kannst du das Makro wie folgt aufbauen. Sobald die datei unter einem anderen Namen gespeichert wird, wird die Nummer beim Öffnen der datei nicht mehr erhöht.
gruß
Franz

Private Sub Workbook_Open()
Dim NrAlt As Long, NrNeu As Long, wbTemplate As Workbook
Dim strTemplate As String, strPfadVorlage As String
strTemplate = "MusterDatei_SerienNummer.xlt"
If LCase(ActiveWorkbook.Name) = LCase(strTemplate) Then 'Template wurde geöffnet
Set wbTemplate = ActiveWorkbook
NrAlt = Me.Worksheets(1).Range("F2").Value
NrNeu = NrAlt + 1
'Neue Nr. im Template eintragen
wbTemplate.Worksheets(1).Range("F2").Value = NrNeu
Application.EnableEvents = False
Application.DisplayAlerts = False
'Datei wieder  speichern
wbTemplate.Save
Application.DisplayAlerts = True
Application.EnableEvents = True
End If
End Sub


Anzeige
@ Franz genial - super - Danke
29.01.2009 10:45:00
Frank
Hallo Franz funktioniert astrein, vielen Dank
Frank

245 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige