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

Versionskontrolle für Excel-Makros

Versionskontrolle für Excel-Makros
16.10.2006 19:21:44
Anreas
Hallo,
ich habe ein nützliches Excel-Makro geschrieben, das ich nun allen Mitarbeitern der Firma in der ich arbeite zukommen lassen möchte. Unsere IT-Abteilung besteht jedoch darauf, daß ich für das Tool eine Versionskontrolle einrichte d.h. das ich sicherstelle, daß meine Kollegen immer mit der aktuellsten Version des Makros arbeiten. Dies könne z.B. so realisiert werden, daß das Makro beim Starten automatisch in einer (z.B. Excel-)Datei auf unserem Netzlaufwerk nachsieht, ob die dort (von mir) hinterlegte Versionsnummer mit der Versionsnummer des Makros übereinstimmt. Stimmen die Versionsnummern überein, so kann mit dem Makro gearbeitet werden. Stimmen die Versionsnummern jedoch nicht überein, so wird das Excel-Tool automatisch wieder geschlossen. So währe dann sichergestellt, daß jeder Mitarbeiter nur mit der letzten Version meines kleinen Tools arbeiten kann.
Hat jemand eine Idee, wie man dies in VBA praktisch realisieren kann?
Ich bin für jede Unterstützung dankbar.
Gruß, Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Versionskontrolle für Excel-Makros
16.10.2006 22:15:43
Stefan
Hallo Andreas,
Wenn Du (oder deine IT Abteilung) nur verhindern willst das Mitarbeiter unbeabsichtigt eine alte Version benutzen, reicht der folgende Code:

Private Sub Workbook_Open()
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("c:\testfile.txt", ForReading, TristateFalse)
myString = f.ReadAll
f.Close
If myString <> "Version 1.5" Then
MsgBox "Diese Dateiversion ist veraltet. Bitte besorgen sie sich eine neue Version!", vbCritical + vbOKOnly
ThisWorkbook.Close savechanges:=False
End If
End Sub

Das Code prueft ob in einem Textfile (bei mir "C:\testfile.txt") der Text "Version 1.5" steht. Sobald ich dieses Textfile abaendere (zu "Version 1.6"?), schliesst sich das Excel-File von selbst unmittelbar nach dem Start.
Da es bei deiner Datei ja auf die Makros ankommt, denke ich nicht das jemand Makros deaktivieren wird, um trotzdem an die (falsche) Datei zu kommen.
Schoene Gruesse
Stefan
Anzeige
@ Stefan Br.- bitte um Erläterung
17.10.2006 10:15:39
paula
hallo stefan,
dein Code hat mein Interesse geweckt, habe ihn getestet, jedoch
erscheint die Fehlermeldung "Variable nicht definiert" und markiert wird
das Wort "TristateFalse". Erkläre mir bitte wofür diese Variable gebraucht wird
und wo/wie sie zu dimensionieren ist.
Wäre dankbar für eine Antwort
Gruss Paula
AW: @ Stefan Br.- bitte um Erläterung
17.10.2006 14:41:20
Stefan
Hallo Paula,
Die Beschreibung der OpenTextFile Funktion kannst Du hier finden:
http://www.avhka.de/VBScript/vbs345.htm
Die Tristate-Variante gibt Aufschluss ueber das Format der geoeffneten Datei.
Ich hab den Code im Internet gefunden und er hat bei mir wunderbar funktioniert ohne dass ich Aenderungen bei mir im System vornehmen musste, deshalb hab ich nicht weiter drueber nachgedacht. Es ist aber vielleicht hilfreich wenn Du eine Referenz auf die Microsoft Scripting Runtime setzt, in der die Variable wohl verankert ist. Wie gesagt liefs bei mir auch ohne, einfach aus der Erstellung des Script-Objekts heraus.
Wenns dann immer noch nicht laeuft - der Wert von TriStateFalse ist 0.
Schoene Gruesse
Stefan
Anzeige
AW:@Stefan Br.- Vielen Dank ,hat geklappt o,T
17.10.2006 16:43:46
paula
Danke
gruss paula
AW: Sicherung der Versionsdatei?
17.10.2006 18:45:20
Andreas
Hallo Stefan,
werde den Code direkt morgen in der Firma testen - vielen Dank dafür!
Hast Du vielleicht noch eine Idee, wie ich die Datei, in der die Versionsnummer enthalten ist, auf dem Netzlaufwerk gegen Änderung und Austausch schützen kann? Dabei dürfte der Zugriff des Makros auf diese Datei jedoch nicht beeinträchtigt werden.
Gruß, Andreas
AW: Sicherung der Versionsdatei?
20.10.2006 15:51:49
Stefan
Hallo Andreas,
Wie Franz geschrieben hat kann ein Netzwerkadmin die Datei/den Ordner sicher so schuetzen, dass sie nicht von jedermann geaendert werden kann. Allerdings, wenn Du davor Angst hast, dass das jemand ueberschreibt (und ich denke das waere muehseliger als sich eine neue Programmversion zu holen ... du kannst ja auch ein Auto-Update-Feature einbauen), dann ist dein gesamtes Konzept in Gefahr, da Du auch ein Makro nicht so schuetzen kannst dass es unter keinen Umstaenden geaendert werden kann. Die Sicherheit des Passwortschutzes soll, soweit die gaengige Meinung, eher "mangelhaft" sein. Im Internt kriegt man jede Menge tools um den Schutz auszuhebeln... und dann hilft Dir der Schutz der Versionsdatei gar nichts.
Viele Gruesse
Stefan
Anzeige
AW: Versionskontrolle für Excel-Makros
16.10.2006 22:58:24
fcs
Hallo Andreas,
ähnliche Lösung wie von Stefan, hier erfolgt die Versionsprüfung nicht beim Öffnen der Arbeitsmappe, sondern erst beim Versuch das Makro zu starten.
Gruss
Franz

Public CodeAbbruch As Boolean
Sub Tool()
Dim Version As String
' Tool XXX, Version 20061010
Version = "20061010" 'aktuelle Version
'Für die Versionsdatei ein Netzverzeichnis verwenden, auf das alle User zugreifen können _
oder mit Administratorrechten die entsprechende Textdatei in ein bestimmtes lokales Verzeichnis _
auf dem Userrechner installieren
Call Versionspruefung(Version, "C:\Test\ToolXXXVersion.txt")
If CodeAbbruch = True Then Exit Sub
MsgBox "Tool ist aktuell" 'Testzeile
'ToolCode
End Sub
Sub Versionspruefung(Version As String, VersionsDatei As String)
'Die VersionsDatei ist eine Textdatei, die in der 1. Zeile die aktuelle Version enthält
Dim VersionAktuell As String, ff As Integer
CodeAbbruch = False
ff = FreeFile()
Open VersionsDatei For Input As #ff
Line Input #ff, VersionAktuell
Close #ff
If Version <> VersionAktuell Then
MsgBox "Sie verwenden eine veraltete Version des Tools XXX!" & vbLf & vbLf & _
"Bitte fordern Sie bei xyz die aktuelle Version """ & VersionAktuell & """ an." & _
vbLf & vbLf & "Tool wird nicht ausgeführt!"
CodeAbbruch = True 'Diese Variable zum Codeabbruch verwenden
Exit Sub
End If
End Sub
Die Textdatei hat dann etwa folgenden Inhalt:
20061010
Aktuelle Versionsnummer des Exceltools XXX
Autor: Hans Müller
Datum: 2006-10-10
Für die Prüfung der Versionsnummer ist nur die 1. Zeile relevant.
Der Rest ist Kommentartext.

Anzeige
AW: Versionsdatei sichern?
17.10.2006 18:50:22
Andreas
Text:
Hallo fcs,
vielen Dank für den Code!
Gleiche Frage wie an Stefan:
Hast Du vielleicht noch eine Idee, wie ich die Datei, in der die Versionsnummer enthalten ist, auf dem Netzlaufwerk gegen Änderung und Austausch schützen kann? Dabei dürfte der Zugriff des Makros auf diese Datei jedoch nicht beeinträchtigt werden.
Gruß, Andreas
AW: Versionsdatei sichern?
17.10.2006 19:36:34
fcs
Hallo Andreas,
ich bin mit Netzwerkadministration nicht so bewandert. Da sollte dir eigenetlich eure IT-Abteilung behilflich sein!!!!!. Der 1. Schutz gegen versehentliches Ändern ist der Schreibschutz per Explorer. Ich weiß, dass man den Zugriff auf Verzeichnisse im Netzwerk Userabhängig einstellen kann, evtl. gibt es auch solche Zugriffsrechte auf Dateiebene, so dass die Namen der änderungsberechtigten User vorgegeben werden, alle weiteren User hätten nur Lesezugriff.
Gruss
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige