Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Quellcode + Versionsverwaltung

Forumthread: VBA Quellcode + Versionsverwaltung

VBA Quellcode + Versionsverwaltung
Tobias
Hallo Forum,
ich muss nocheinmal totale Anfängerfragen stellen. Gibt es eine Möglichkeit den VBA Quellcode mit zbs. SVN so zu versionieren, dass man auch die Unterschiede zwischen dem Quellcode erkennen kann (Diff-Funktion) ? Anders ausgedrückt: ich würde gerne Quellcode plain Text zu speichern und nicht total Versteckt in den ExcelDateien die man nur mit Excel lesen kann. Aber natürlich nicht jetzt per Copy & Paste das ganze Zeug rausziehen.
Ich habe schon meine VBA Macros in eine XLA Datei ausgelagert, aber das hilft auch nicht.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
VBA Export, Quellcode + Versionsverwaltung
10.09.2009 17:30:35
fcs
Hallo Tobias,
du kannst zum Beispiel alle Module eines VBA-Projekts in ein Verzeichnis exportieren. Diesen Exprot kann man automatisieren.
Dabei erzeugt Excel Dateien mit den Erweitereungen
bas - für algemeine Module
cls - für "DieseArbeitsmappe", Tabellen und Klassenmodule
frm - Code eines Userforms
frx - Aufbau eines Userform
Mit Ausnahme der frx-Dateien sind dies alles Text-Dateien, die zu Beginn ein paar Informationen zu dem zugehörigen Element enthalten und dann den Code wie du ihn im VBA-Editor siehst.
Im Datei-Explorer kannst du dann mit Senden an "Wordpad" oder einen anderen Editor die Dateien einsehen.
Mit diesen Dateien müsste dann ja auch dein Versionierungs-Tool funktionieren.
Die Nachfolgende Prozedur export alle Module des VBA-Projekts der aktiven Datei in ein Verzeichnis und erstellt auch einen Satzt Text-Dateien zum "nachschauen".
Gruß
Franz
'Prozedur erstellt unter Excel 2003
Sub Code_Export()
'Gesamten Code und Module der aktiven Datei exportieren
'Zur Ausführung der Prozedur muss:
'1. Im VBA-Editor unter Extras--> Verweise... _
der Verweis auf die _
Microsoft Visual Basic for Applications Extensibility x.x _
aktiviert werden
'2. In Excel unter Extras --> Optionen --> Sicherheit --> Makrosicherheit _
die Option "Zugriff auf das VB-Projekt vertrauen" aktiviert werden.
Dim myVBComponent As VBComponent, varFolderName, wbAktiv As Workbook
Dim strFile As String
On Error GoTo Fehler
If MsgBox("Sämtlichen VBA-Code der aktiven Mappe exportieren?", _
vbYesNo, "VBA-Code-Export") = vbYes Then
Set wbAktiv = ActiveWorkbook
'Verzeichnis auswählen für Export
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.InitialView = msoFileDialogViewList
'Verzeichnis "C:\Lokale Daten\Test\" als Basis-Verzeichnis für Code- _
Dateien ggf. anpassen
strFile = "C:\Lokale Daten\Test\" & "Code_" & _
VBA.Replace(wbAktiv.Name, ".", "_")
If Dir(strFile, vbDirectory) = "" Then
VBA.MkDir strFile
End If
.InitialFileName = strFile & Application.PathSeparator
.Title = "Bitte den Ordner wählen, in dem das Unterverzeichnis " _
& "für Export angelegt werden soll"
If .Show  False Then
varFolderName = .SelectedItems(1)
'Unterverzeichnis für Dateien erstellen
varFolderName = varFolderName & Application.PathSeparator _
& Format(Now, "YYYYMMDD_hhmm")
VBA.MkDir Path:=varFolderName
'Unterverzeichnis für TXT-Dateien erstellen
VBA.MkDir Path:=varFolderName & Application.PathSeparator & "TXT"
Else
Exit Sub
End If
End With
With ActiveWorkbook.VBProject
For Each myVBComponent In .VBComponents
With myVBComponent
Select Case .Type
Case 1: strFile = .Name & ".bas" 'Allgemeines Modul
Case 2: strFile = .Name & ".cls" 'Klassenmodul
Case 3: strFile = .Name & ".frm" 'Userform
Case 100: strFile = .Name & ".cls" 'Tabelle oder DieseArbeitsmappe
End Select
'alle Module  exportieren
.Export FileName:=varFolderName & Application.PathSeparator & strFile
'Code der Module als TXT-Datei speichern
.Export FileName:=varFolderName & Application.PathSeparator & "TXT" _
& Application.PathSeparator & .Name & ".txt"
If .Type = 3 Then 'Userform
'Bei Userformen die erzeugte frx-Datei wieder löschen
strFile = varFolderName & Application.PathSeparator & "TXT" _
& Application.PathSeparator & .Name & ".frx"
Kill strFile
Else
End If
End With
Next
End With
End If
MsgBox "Fertig"
Fehler:
With Err
If .Number  0 Then
Select Case .Number
Case 1004
MsgBox "Fehler: " & .Number & vbLf & .Description & vbLf _
& "Vor Start des Makros unter Optionen ""Sicherheit --> " _
& "Makrosicherheit"" Option " _
& """Zugriff auf das VB-Projekt vertrauen"" aktivieren!"
Case Else
MsgBox "Fehler: " & .Number & vbLf & .Description
End Select
End If
End With
End Sub

Anzeige
AW: VBA Export, Quellcode + Versionsverwaltung
11.09.2009 12:37:22
Tobias
Vielen dank, dass ist schonmal ein super Anfang.
;
Anzeige

Infobox / Tutorial

Versionsverwaltung für VBA Quellcode in Excel


Schritt-für-Schritt-Anleitung

Um den VBA Quellcode in Excel effizient zu versionieren, kannst Du die folgenden Schritte ausführen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Verweis aktivieren: Gehe zu Extras > Verweise... und aktiviere den Verweis auf die Microsoft Visual Basic for Applications Extensibility x.x.

  3. Makrosicherheit anpassen: In Excel gehe zu Extras > Optionen > Sicherheit und aktiviere die Option "Zugriff auf das VB-Projekt vertrauen".

  4. Export-Prozedur einfügen: Kopiere den folgenden VBA-Code in ein Modul:

    Sub Code_Export()
        Dim myVBComponent As VBComponent, varFolderName, wbAktiv As Workbook
        Dim strFile As String
        On Error GoTo Fehler
        If MsgBox("Sämtlichen VBA-Code der aktiven Mappe exportieren?", vbYesNo, "VBA-Code-Export") = vbYes Then
            Set wbAktiv = ActiveWorkbook
            'Verzeichnis auswählen für Export
            With Application.FileDialog(msoFileDialogFolderPicker)
                .AllowMultiSelect = False
                strFile = "C:\Lokale Daten\Test\" & "Code_" & VBA.Replace(wbAktiv.Name, ".", "_")
                If Dir(strFile, vbDirectory) = "" Then VBA.MkDir strFile
                .Title = "Bitte den Ordner wählen, in dem das Unterverzeichnis für Export angelegt werden soll"
                If .Show = False Then Exit Sub
                varFolderName = .SelectedItems(1) & Application.PathSeparator & Format(Now, "YYYYMMDD_hhmm")
                VBA.MkDir varFolderName
            End With
            With ActiveWorkbook.VBProject
                For Each myVBComponent In .VBComponents
                    Select Case myVBComponent.Type
                        Case 1: strFile = myVBComponent.Name & ".bas"
                        Case 2: strFile = myVBComponent.Name & ".cls"
                        Case 3: strFile = myVBComponent.Name & ".frm"
                        Case 100: strFile = myVBComponent.Name & ".cls"
                    End Select
                    myVBComponent.Export varFolderName & Application.PathSeparator & strFile
                Next myVBComponent
            End With
        End If
        MsgBox "Fertig"
    Fehler:
        If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Description
    End Sub
  5. Prozedur ausführen: Führe die Prozedur Code_Export aus, um alle Module in ein Verzeichnis zu exportieren.


Häufige Fehler und Lösungen

  • Fehler: Zugriff auf das VB-Projekt: Stelle sicher, dass die Makrosicherheit korrekt eingestellt ist. Gehe zu Extras > Optionen > Sicherheit und aktiviere "Zugriff auf das VB-Projekt vertrauen".

  • Fehler beim Exportieren: Überprüfe den Pfad, den Du für den Export wählst, um sicherzustellen, dass der Ordner existiert oder erstellt werden kann.


Alternative Methoden

Du kannst auch Tools wie SVN (Subversion) verwenden, um Deine VBA-Projekte zu versionieren. Dies ermöglicht eine umfassendere Versionsverwaltung, einschließlich der Diff-Funktionalität, um Unterschiede im Quellcode zu erkennen.


Praktische Beispiele

  1. Export der Module in ein Verzeichnis: Verwende die oben gezeigte Prozedur, um alle Module in einen speziellen Ordner zu exportieren. Du erhältst .bas, .cls, .frm und .txt Dateien für eine einfache Versionsverwaltung.

  2. Integration mit SVN: Nach dem Export kannst du diese Dateien in ein SVN-Repository hochladen, um die Versionierung zu verwalten.


Tipps für Profis

  • Automatisierung: Du kannst die Export-Prozedur in regelmäßigen Abständen automatisieren, um sicherzustellen, dass Du immer die neueste Version Deiner VBA-Codes in der Versionsverwaltung hast.

  • Backup-Strategien: Stelle sicher, dass Du regelmäßige Backups Deiner Excel-Dateien machst, um Datenverlust zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich VBA-Module in Textdateien exportieren?
Nutze die oben beschriebene Code_Export-Prozedur, die alle Module in Textdateien exportiert.

2. Welche Excel-Version benötige ich?
Die beschriebenen Schritte sind für Excel 2003 und höhere Versionen geeignet. Achte darauf, dass die VBA-Extensibility aktiv ist.

3. Kann ich mit SVN auch andere Dateitypen verwalten?
Ja, SVN kann jede Art von Datei versionieren, nicht nur VBA-Module. Es ist ideal für Softwareprojekte.

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