Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Codefehler bei fortlaufender Nummerierung

Forumthread: Codefehler bei fortlaufender Nummerierung

Codefehler bei fortlaufender Nummerierung
17.08.2006 17:35:10
Raschid
Hallo, liebe Excel-Profis.
Habe mich als Neuling in VBA bisher halbwegs durchgeschlagen, komme aber an einem Punkt nicht mehr weiter. Vielleicht hat jemand den entscheidenden Tip?
Ich habe in Excel 2003 einen Reklamationsreport auf Basis einer Vorlage (.xlt) erstellt. Dieser soll beim Öffnen automatisch eine fortlaufende Nummerierung erhalten und mit dieser Nummer auch automatisch gespeichert werden.
Hierzu bin ich in einem Forum auf einen gut passenden Code gestoßen, den ich angepasst habe. Leider funktioniert es noch nicht richtig:
- beim ersten Öffnen eines Dokumentes (.xls) aus der Vorlage wird tatsächlich der Zähler auf "1" gesetzt und das Dokument unter "Reklamationsreport1" an der gewünschten Stelle gespeichert.
- Öffne ich aus der Vorlage heraus aber ein weiteres Dokument, will Excel dieses wieder unter "Reklamationsreport1" speichern und zählt nicht weiter hoch.
Excel müsste vermutlich den hochgezählten Wert "Nr" in der Vorlage speichern, was es wohl nicht tut?
Hier der Code (die ersten Zeilen lesen nur den Programmnutzer aus):
Option Explicit

Private Sub Workbook_Open()
With Worksheets("Reklamationsreport")
.Range("F2").Value = _
Application.UserName
'Excel Benutzer = Application.UserName
'Windows Benutzer = Environ("UserName")
End With
Dim intIndex As Integer, intLine As Integer
Dim intStartLine As Integer, intEndLine As Integer
Const Pfad = "H:\Reklamationen\"
If ThisWorkbook.CustomDocumentProperties.Count = 0 Then
ThisWorkbook.CustomDocumentProperties.Add Name:="Nr", LinkToContent:=False, Type:=msoPropertyTypeNumber, Value:=0
End If
ThisWorkbook.CustomDocumentProperties("Nr") = ThisWorkbook.CustomDocumentProperties("Nr") + 1
ThisWorkbook.SaveAs Filename:=Pfad & "Reklamation" & ThisWorkbook.CustomDocumentProperties("Nr")
ThisWorkbook.Worksheets("Reklamationsreport").Range("B2") = ThisWorkbook.CustomDocumentProperties("Nr")
With ThisWorkbook.VBProject
For intIndex = 1 To .VBComponents.Count
With .VBComponents(intIndex).CodeModule
For intLine = 1 To .CountOfLines
If .ProcOfLine(intLine, 0) = "Workbook_Open" Then
If intStartLine = 0 Then
intStartLine = intLine
Else
intEndLine = intLine
End If
End If
Next
If intStartLine <> 0 Then
.DeleteLines intStartLine, intEndLine - intStartLine + 1
Exit For
End If
End With
Next
End With
End Sub

---
Stecke hier fest; wäre also eine große Hilfe, wenn jemand Rat wüsste. Vielen Dank vorab.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codefehler bei fortlaufender Nummerierung
17.08.2006 21:12:58
ChrisL
Hallo
Bin zu müde, um deinen Code genau zu interpretieren und testen, aber...
Ich denke der Code funktioniert nur mit einer xls. Um eine Vorlage zu verwenden müsstest du die Nummer m.E. in einer externen Datei (üblicherweise TXT) speichern.
http://www.google.com/search?q=fortlaufende+nummer+txt+%3Asite%3Awww.herber.de&btnG=Search&hl=en&lr=&rls=com.netscape%3Aen-US
Gruss
Chris
Anzeige
AW: Codefehler bei fortlaufender Nummerierung
18.08.2006 11:36:38
Heide_Tr
hallo Raschid,
vor die Zeile "ThisWorkbook.SaveAs ..." gehört ein "ThisWorkbook.Save", damit er die hochgezählte Nummer auch wirklich in den Dateieigenschaften speichert.
viele Grüße. Heide
AW: Codefehler bei fortlaufender Nummerierung
18.08.2006 12:09:37
Raschid
Hallo Heide,
vielen Dank für den Tip. Hat leider nicht den gewünschten effekt gebracht. Wird wohl so sein, wie Chris es erläutert hat: Da es eine Vorlage ist, muss die Dateieigenschaft in einer externen Datei gespeichert werden. Da wird es für mich allerdings zu kompliziert. Hatte gehofft, es geht irgendwie anders.
Aber nochmals vielen Dank + ein schönes Wochenende,
Raschid
Anzeige
AW: Codefehler bei fortlaufender Nummerierung
18.08.2006 12:55:50
Bertram
Hallo Raschid,
ich habe das in Vorlagen mit SaveSetting und GetSetting gelöst.
Damit schreibst du deine Werte in die Registry (regedit) bzw. liest sie wieder aus. Du kannst so z.B. deine aktuelle Reklamationsnummer ablegen.
Gruß
Bertram
AW: Codefehler bei fortlaufender Nummerierung
18.08.2006 13:05:47
Raschid
Hallo Bertram,
danke, das wäre genau die geradlinige Lösung, die mir vorschwebt. Allerdings liegt die Vorlage auf einem Serverlaufwerk und wird von mehreren Nutzern auf mehreren PC's verwendet. Da kann das mit der Registry vermutlich nicht mehr laufen, oder?
Schönes Wochenende,
Raschid
Anzeige
AW: Codefehler bei fortlaufender Nummerierung
18.08.2006 13:12:36
Bertram
Hallo,
ich denke nicht, da die Werte in die Registry des jeweiligen PCs geschrieben werden. Aber evtl. kannst du die Nummer ja auch erst vergeben, wenn die Reklamationen von dir (auf einem PC) in eine gemeinsame Excelliste oder Datenbank eingefügt werden.
Gruß
Bertram
AW: Codefehler bei fortlaufender Nummerierung
18.08.2006 18:53:17
ChrisL
Hallo nochmal
Mir gefällt die Lösung mit der Datenbank, aber ist m.E. mit etwas mehr Aufwand verbunden.
Probier mal...
https://www.herber.de/forum/archiv/444to448/t444647.htm

Private Sub Workbook_Open()
Dim ExcelExe$, dName$, Nr$
dName = "C:\Daten\" & "\Zaehler.txt"
Close
On Error Resume Next
Open dName For Input As #1
If Err > 0 Then
Open dName For Output As #1
Print #1, "0"
Close
Open dName For Input As #1
End If
Input #1, Nr
Close
ThisWorkbook.Worksheets("Reklamationsreport").Range("B2") = Nr + 1
Open dName For Output As #1
Print #1, Nr + 1
Close
End Sub

Gruss
Chris
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige