Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
792to796
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
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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.

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

Betreff
Datum
Anwender
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
Anzeige
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
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
Anzeige
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
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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige