Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
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
Inhaltsverzeichnis

VBA Versionsnummer aktualisieren (Codeergänzung)

VBA Versionsnummer aktualisieren (Codeergänzung)
Thomas
Hallo,
Habe folgenden Qeullcode
If ActiveWorkbook.Saved = True Then
MsgBox "Die Datei " & ActiveWorkbook.Name & " wurde nicht verändert.", _
vbInformation
End If
Dim MyDialog As Variant
MyDialog = MsgBox("Änderungen in " & ActiveWorkbook.Name & _
" speichern?", vbYesNoCancel + vbQuestion)
If MyDialog = vbYes Then
MsgBox "Es wurde 'JA' gewählt."
ElseIf MyDialog = vbNo Then
MsgBox "Es wurde 'NEIN' gewählt."
ElseIf MyDialog = vbCancel Then
MsgBox "Es wurde ABBRECHEN gewählt."
End If
End Sub
Funktion:
Wenn Änderung in Excel Dokument und Dokument verlassen wird bzw gespeichert wird, dann Dialogfenster (Änderung Speichern: Ja, Nein, Abrechen) anzeigen.
Sollte zumindest auch fragen, wenn ich speichere oder schließe (biite prüfen).
Gegeben: Zelle A1 hat den String "Version.X", das X steht für eine Zahl
Erweiterung gewünscht:
Wenn wie oben beschrieben, Dialogfenster angezeigt wird, soll vor dem verlassen bzw. Speichern das Feld A1 geändert werden.
Wenn Dialogfel 'JA' dann Feld Version.X (hier das X um 1 erhöhen) und Deatei unter DateinamenVers.X (X gelich wie im Dokument setzen) im Pfad XYZ speichern.
Es sollt immer, wenn das Dokument nach einer Änderung verlassen wird, die Versionsnummer in Feld A1 erhöht und der Dateiname angepasst werden.
Ansatz:
Dachte da an den Befehl replace um die Vesion zu erhöhen. oder muss man das über Konkatination machen da die Versionsnummer ja Teil des Strings ist, die Nummer als Integer ja mittels Schelfe erhöt werden kann (oder?).
Wie kann man das machen?
Bitte Quellcode konkret ergänzen, da ich Anfänger bin und mit VBA nie was ztun hatte.
Danke
Thomas
AW: VBA Versionsnummer aktualisieren (Codeergänzung)
22.02.2010 10:17:29
Renee
Hi Thomas,
Da die Version eh schon Bestandteil des Filenamens ist, sehe ich nicht ein, wieso du die Version noch in einer Zelle (A1) speichern willst. So wie ich das sehe, genügt es doch die Version um 1 zu erhöhen, wenn eine Sicherung bestätigt wird (Code in DieseArbeitsmappe):
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim vTemp
Dim myDialog As Variant
Dim strShortName As String
Dim intVersion As Integer
Dim strExtension As String
Dim strNewName As String
On Error Resume Next
vTemp = Split(ThisWorkbook.Name, ".")
strShortName = vTemp(0)
intVersion = Val(vTemp(1)) + 1
strExtension = vTemp(UBound(vTemp))
On Error GoTo 0
strNewName = strShortName & "." & intVersion & "." & strExtension
If ThisWorkbook.Saved = True And _
ThisWorkbook.Name = strNewName Then
MsgBox "Die Datei " & ThisWorkbook.Name & _
" wurde nicht verändert.", vbInformation
Else
myDialog = MsgBox("Änderungen als " & vbCrLf & _
strNewName & vbCrLf & _
"speichern?", vbYesNoCancel + vbQuestion)
Application.EnableEvents = False
Select Case myDialog
Case vbYes
ThisWorkbook.SaveAs Filename:=strNewName
Case Is = vbNo
MsgBox "Es wurde 'NEIN' gewählt. NICHT gesichert!"
Application.EnableEvents = True
ThisWorkbook.Close SaveChanges:=False
Case vbCancel
MsgBox "Es wurde ABBRECHEN gewählt. WIEDERHOLEN!"
Cancel = True
End Select
Application.EnableEvents = True
End If
End Sub

GreetZ Renée
Anzeige
AW: VBA Versionsnummer aktualisieren (Codeergänzun
23.02.2010 11:17:02
Walldorf
Hi,
danke funktioniert ganz gut.
Habe den Code bisl geändert.
Beziehe mich nun auf Range("A1") der darin enthaltenen Version. z.b. Range("A1") = Version.0
Obtional die andere Variante gelassen, in der ich auch die Datei unter einer anderen Versionnummer speichere.
Dialogfenster 1:
Nach dem ersten Dialogfenster Änderung in Datei speichern (ja, nein, abbrechen), bestätiegen mit ja erhalte ich ein weiteres Dialogfenster.
Dialogfenster 2:
Wollten Sie wirklich speichern (ja, nein, Abbrechen)
Nach bestätiegen Nein oder Abbrechen erhalte ich folgende Fehlermeldung:
Fehlermeldung:
Run time Error Mehtod 'Save AS' of Object 'Workbook' failed
Komme einfach nicht drauf wo der Fehler liegt.
Brauche hier meiner Meinung nach die Option Nein nicht.
Bei Abbrechen sollter er ins Dokument zurückkehren, bei Ja Datei überschreiben, speichern.
Quelcode wo der Fehler auftritt:
Bleibt hier stehen:
Case vbYes
ThisWorkbook.SaveAs Filename:=strNewName
Auschnitt aus Gesamtenquellcode:
.
.
.
.
.
.
On Error GoTo 0
strNewName = strShortName & strExtension
ThisWorkbook.Worksheets("sheet1").Range("A1") = vers
If ThisWorkbook.Saved = True And _
ThisWorkbook.Name = strNewName Then
MsgBox "Die Datei " & ThisWorkbook.Name & _
" wurde nicht verändert.", vbInformation
Else
myDialog = MsgBox("Änderungen als " & vbCrLf & _
strNewName & vbCrLf & _
"speichern?", vbYesNoCancel + vbQuestion)
Application.EnableEvents = False
Select Case myDialog
Case vbYes
ThisWorkbook.SaveAs Filename:=strNewName
Case Is = vbNo
MsgBox "Es wurde 'NEIN' gewählt. NICHT gesichert!"
Application.EnableEvents = True
ThisWorkbook.Close SaveChanges:=False
Case vbCancel
MsgBox "Es wurde ABBRECHEN gewählt. WIEDERHOLEN!"
Cancel = True
End Select
Application.EnableEvents = True
End If
End Sub
Danke für die Hilfe
Anzeige
AW: VBA Versionsnummer aktualisieren (Codeergänzun
23.02.2010 11:28:25
Renee
Hi,
Zitat: Habe den Code bisl geändert.
Ich kann nicht sehen was du alles am Code geändert hast.
Also kann ich auch nicht sagen, warum der Fehler entsteht.
Gründe könnten sein:
Mappe wurde noch nie gespeichert!
Der Filename enthält ungültige Zeichen/Extension.
GreetZ Renée
AW: VBA Versionsnummer aktualisieren (Codeergänzun
23.02.2010 12:12:31
Walldorf
Sorry,
Bin gerade nicht an meinem eigentlichen Arbeitsplatz, habe nicht den aktuellen (gesamten) code
zur Verfügung.
Werde, dass dann so gegen Abends einstellen können.
Danke schonmal für die Bemühungen.
AW: VBA Versionsnummer aktualisieren (Codeergänzun
23.02.2010 18:57:27
Walldorf
Hallo,
Hier nun der ganze Code. Bitte nicht wundern, warum ich das so brauche. Finde das ja diese Funktionalität auch nicht so gut ist. Ein Freund braucht genau die Funktionaliät, dass eben ein bestimmtes Feld und nicht die Datei aktualisiert wird. Möchte aber die Option mit der Aktualisieurng der Datei im Code lassen. (Für den Fall das....)
Wie oben erwähnt bleibt der Debuger hier stehen:
ThisWorkbook.SaveAs Filename:=strNewName
Funktion wie schon erwähnt.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim vTemp
Dim vTemp1
Dim myDialog As Variant
Dim strShortName As String
Dim intVersion As Integer
Dim strExtension As String
Dim strNewName As String
Dim vers As Integer
Dim vers1 As String
Dim versneu As Integer
On Error Resume Next
vTemp = Split(ThisWorkbook.Name, ".")
strShortName = vTemp(0)
intVersion = Val(vTemp(1)) + 1
strExtension = vTemp(UBound(vTemp))
vTemp1 = Split(ThisWorkbook.Worksheets("Tabelle1").Range("A1"), ".")
On Error GoTo 0
strNewName = strShortName & "." & strExtension
If ThisWorkbook.Saved = True And _
ThisWorkbook.Name = strNewName Then
MsgBox "Die Datei " & ThisWorkbook.Name & _
" wurde nicht verändert.", vbInformation
Else
myDialog = MsgBox("Änderungen als " & vbCrLf & _
strNewName & vbCrLf & _
"speichern?", vbYesNoCancel + vbQuestion)
Application.EnableEvents = False
Select Case myDialog
Case vbYes
versneu = Val(vTemp1(1)) + 1
vers1 = "Version.0" & versneu
ThisWorkbook.Worksheets("Tabelle1").Range("A1") = vers1
ThisWorkbook.SaveAs Filename:=strNewName
Case Is = vbNo
MsgBox "Es wurde 'NEIN' gewählt. NICHT gesichert!"
Application.EnableEvents = True
ThisWorkbook.Close SaveChanges:=False
Case vbCancel
MsgBox "Es wurde ABBRECHEN gewählt. WIEDERHOLEN!"
Cancel = True
End Select
Application.EnableEvents = True
End If
End Sub
Vielen Dank
Anzeige
AW: VBA Versionsnummer aktualisieren (Codeergänzun
23.02.2010 19:38:38
Walldorf
Hi,
Ich bins wieder mal. Wäre schon wunschlos zufrieden, wenn das so wie oben funktioniert, falls du mal lust und Zeit hast hier ne kleine Ergänzungsaufgabe. Habe leider die Woche selber keine Zeit (bin gerade in einer Zertifizierung von SAP), um dass selber zu probieren.
Vorerst würde ich mich freuen, wenn die erste Version funktioniert.
Funktion Ergänzung:
Im Porgramm oben wird ja ein bestimmtes Feld (Version.X) nach einer Änderung aktualisiert und immer die gleiche Datei nach Abfrage Dialogbox überschrieben. (Auf diese Datei wird zugegriffen, deshalb darf diese nicht geändert werden)
Nun soll allerdings wie schon mal, zusätzlich auch noch eine neue Versionsdatei erstellt werden (Datei.VersionX) . Also ändern des Feldinhaltes + neue Versionsdatei.
Ergänzung des Dialogfensters:
Jetzt soll der User gefragt werden ob er die Änderung in der sleben Datei (Datei überschreiben) speichern möchte (funktionalität wie oben ja, nein, abbrechen) oder da die Änderungen schwerwiegend waren eine neue Versionsdatei erstellt werden soll.
Im ersten Fall wird wie berreits jetzt einfach überschieben.
Im zweiten Fall soll dann die neue Versionsdatei erstellt wreden + eine Datei die immer den letzten Versionsstand hat (hier änder sich bei dieser Datei der Name nicht.)
Also:
1. Es soll dann im Ausgabeordner immer eine Hauptdatei existieren (der Name soll gleichbleiben).
2. Versionsdateien erstellt werden, immer dann wenn dies der user mit ja besätigt.
3. Wenn die Versiondatei erstellt wird dann soll die Haupdatei genau den Stand der gerade erstellten Verion haben (also aktuallisiert werden).
Somit kann ich von einem anderen Programm aus auf die Hauptdatei verlinken (da sich diese nicht ändert) und Ich kann die Versionen nachvollziehen, was ja sinn macht. (alte Versionsstände zu speichern)
Merci, vielen Dank nochmals.
PS: Zusatz bitte nur machen, wenn es dir keine Umsätnde macht, du mal Zeit findest und Lust hast.
Zusatz wäre allerdings nicht dringlich.
Viel Spaß
Anzeige
AW: VBA Versionsnummer aktualisieren (Codeergänzun
24.02.2010 00:09:32
Thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige