it-swarm.com.de

Die beste Möglichkeit, die Versionskontrolle für MS Excel durchzuführen

Welche Versionskontrollsysteme haben Sie mit MS Excel (2003/2007) verwendet? Was würdest du empfehlen und warum? Welche Einschränkungen haben Sie bei Ihrem Versionskontrollsystem mit der besten Bewertung festgestellt?

Um dies in die richtige Perspektive zu bringen, hier einige Anwendungsfälle:

  1. versionskontrolle für VBA-Module 
  2. mehr als eine Person arbeitet an einer Excel-Kalkulationstabelle, und möglicherweise ändern sie das Arbeitsblatt, das sie zusammenführen und integrieren möchten. Dieses Arbeitsblatt kann Formeln, Daten, Diagramme usw. enthalten
  3. die Benutzer sind nicht zu technisch und je weniger Versionskontrollsysteme verwendet werden, desto besser
  4. Platzbeschränkung ist eine Überlegung. Im Idealfall werden nur inkrementelle Änderungen und nicht die gesamte Excel-Tabelle gespeichert. 
156
TheObserver

Ich habe gerade eine Tabelle mit Bazaar eingerichtet, mit manuellem Ein-/Auschecken über TortiseBZR. Da das Thema mir beim Sparen half, wollte ich meine Lösung hier posten.

Die Lösung für mich war, eine Kalkulationstabelle zu erstellen, die alle Module beim Speichern exportiert und die Module beim Öffnen entfernt und erneut importiert. Ja, dies kann potenziell gefährlich für die Konvertierung vorhandener Kalkulationstabellen sein.

Dadurch kann ich die Makros in den Modulen über Emacs (Ja, Emacs) oder nativ in Excel bearbeiten und mein BZR-Repository nach größeren Änderungen festschreiben. Da es sich bei allen Modulen um Textdateien handelt, funktionieren die Standardbefehle in BZR mit Ausnahme der Excel-Datei selbst für meine Quellen.

Ich habe ein Verzeichnis für mein BZR-Repository X:\Data\MySheet eingerichtet. Im Repo befinden sich MySheet.xls und eine .vba-Datei für jedes meiner Module (dh: Module1Macros). In meiner Tabelle habe ich ein Modul hinzugefügt, das vom Export-/Importzyklus mit der Bezeichnung "VersionControl" ausgenommen ist. Jedes Modul, das exportiert und erneut importiert werden soll, muss auf "Makros" enden.

Inhalt des Moduls "VersionControl":

Sub SaveCodeModules()

'This code Exports all VBA modules
Dim i%, sName$

With ThisWorkbook.VBProject
    For i% = 1 To .VBComponents.Count
        If .VBComponents(i%).CodeModule.CountOfLines > 0 Then
            sName$ = .VBComponents(i%).CodeModule.Name
            .VBComponents(i%).Export "X:\Tools\MyExcelMacros\" & sName$ & ".vba"
        End If
    Next i
End With

End Sub

Sub ImportCodeModules()

With ThisWorkbook.VBProject
    For i% = 1 To .VBComponents.Count

        ModuleName = .VBComponents(i%).CodeModule.Name

        If ModuleName <> "VersionControl" Then
            If Right(ModuleName, 6) = "Macros" Then
                .VBComponents.Remove .VBComponents(ModuleName)
                .VBComponents.Import "X:\Data\MySheet\" & ModuleName & ".vba"
           End If
        End If
    Next i
End With

End Sub

Als nächstes müssen wir Ereignis-Hooks für das Öffnen/Speichern einrichten, um diese Makros auszuführen. Klicken Sie im Code-Viewer mit der rechten Maustaste auf "ThisWorkbook" und wählen Sie "Code anzeigen". Sie müssen möglicherweise das Auswahlfeld am oberen Rand des Codefensters nach unten ziehen, um von der Ansicht "(Allgemein)" zur Ansicht "Arbeitsmappe" zu wechseln.

Inhalt der Ansicht "Arbeitsmappe":

Private Sub Workbook_Open()

ImportCodeModules

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

SaveCodeModules

End Sub

Ich werde mich in den nächsten Wochen mit diesem Workflow beschäftigen und werde posten, wenn ich Probleme habe.

Vielen Dank für das Teilen des VBComponent-Codes!

63
Demosthenex

TortoiseSVN ist ein erstaunlich guter Windows-Client für das Versionskontrollsystem Subversion. Eine Funktion, die ich gerade entdeckt habe, ist, dass wenn Sie auf einen Unterschied zwischen den Versionen einer Excel-Datei klicken, beide Versionen in Excel geöffnet werden und die geänderten Zellen (in Rot) hervorgehoben werden. Dies geschieht durch die Magie eines VBS-Skripts, das hier beschrieben wird.

Dies kann nützlich sein, auch wenn TortoiseSVN NICHT verwendet wird.

39
mcherm

Es hängt davon ab, ob Sie über Daten oder den in einer Kalkulationstabelle enthaltenen Code sprechen. Ich habe zwar eine starke Abneigung gegen Microsoft Visual Sourcesafe und würde es normalerweise nicht empfehlen, es lässt sich jedoch problemlos in Access und Excel integrieren und bietet Quellcodeverwaltung für Module.

[Tatsächlich enthält die Integration mit Access Abfragen, Berichte und Module als einzelne Objekte, die versioniert werden können.]

Der MSDN-Link lautet hier .

8
Mitch Wheat

Lassen Sie mich zusammenfassen, was Sie zur Versionskontrolle wünschen und warum:

  1. Was:

    • Code (VBA)
    • Tabellenkalkulationen (Formeln)
    • Tabellenkalkulationen (Werte)
    • Charts
    • ...
  2. Warum: 

    • Audit-Log
    • Zusammenarbeit
    • Versionsvergleich ("diffing")
    • Zusammenführen

Wie andere hier geschrieben haben, gibt es eine Reihe von Lösungen zusätzlich zu bestehenden Versionskontrollsystemen, wie zum Beispiel:

  • Git
  • Mercurial
  • Subversion
  • Basar

Wenn Sie sich nur mit dem VBA-Code in Ihren Arbeitsmappen beschäftigen, funktioniert der oben beschriebene Ansatz von Demosthenex oder VbaGit ( https://github.com/brucemcpherson/VbaGit ) sehr gut und ist relativ einfach zu implementieren. Die Vorteile sind, dass Sie sich auf bewährte Versionskontrollsysteme verlassen können und eines nach Ihren Bedürfnissen auswählen können (siehe https://help.github.com/articles/what-are-the-differences-between-svn -and-git/ für einen kurzen Vergleich zwischen Git und Subversion).

Wenn Sie sich nicht nur um den Code, sondern auch um die Daten in Ihren Tabellen sorgen ("hartcodierte" Werte und Formelergebnisse), können Sie eine ähnliche Strategie dafür verwenden: Serialisieren Sie den Inhalt Ihrer Tabellen in ein Textformat (über Range.Value). und verwenden Sie ein vorhandenes Versionskontrollsystem. Hier ist ein sehr guter Blogbeitrag dazu: https://wiki.ucl.ac.uk/display/~ucftpw2/2013/10/18/User+git+for+version+control+of+spreadsheet+models+- + Teil + 1 + von + 3

Der Tabellenkalkulationsvergleich ist jedoch ein nicht triviales algorithmisches Problem. Es gibt ein paar Tools, wie beispielsweise Microsoft Spreadsheet Compare ( https://support.office.com/de-de/article/Overview-of-Spreadsheet-Compare-13fafa61-62aa-451b-8674-242ce5f2c986 . ), Exceldiff ( http://exceldiff.arstdesign.com/ ) und DiffEngineX ( https://www.florencesoft.com/compare-Excel-workbooks-differences.html ). Es ist jedoch eine weitere Herausforderung, diesen Vergleich in ein Versionskontrollsystem wie Git zu integrieren.

Schließlich müssen Sie sich auf einen Workflow einigen, der Ihren Bedürfnissen entspricht. Einen einfachen, maßgeschneiderten Git für Excel-Workflow finden Sie unter https://www.xltrail.com/blog/git-workflow-for-Excel .

7
Bjoern Stiel

Mir ist kein Werkzeug bekannt, das dies gut tut, aber ich habe eine Vielzahl von selbst entwickelten Lösungen gesehen. Der gemeinsame Leitfaden dabei ist, die binären Daten unter Versionskontrolle zu minimieren und Textdaten zu maximieren, um die Leistungsfähigkeit herkömmlicher scc-Systeme zu nutzen. Um dies zu tun:

  • Behandeln Sie die Arbeitsmappe wie jede andere Anwendung. Getrennte Logik, Konfiguration und Daten.
  • Trennen Sie den Code aus der Arbeitsmappe.
  • Erstellen Sie die Benutzeroberfläche programmgesteuert. 
  • Schreiben Sie ein Build-Skript, um die Arbeitsmappe zu rekonstruieren.
7
Hobbo

Bei @Demosthenex arbeiten @Tmdean und @Jon Crowell wertvolle Kommentare! (+1 ihnen)

Ich speichere Moduldateien in git\dir neben dem Speicherort der Arbeitsmappe. Ändern Sie das nach Ihren Wünschen.

Dies wird NICHT Änderungen an Arbeitsmappencode verfolgen. Es liegt an Ihnen, sie zu synchronisieren.

Sub SaveCodeModules()

'This code Exports all VBA modules
Dim i As Integer, name As String

With ThisWorkbook.VBProject
    For i = .VBComponents.count To 1 Step -1
        If .VBComponents(i).Type <> vbext_ct_Document Then
            If .VBComponents(i).CodeModule.CountOfLines > 0 Then
                name = .VBComponents(i).CodeModule.name
                .VBComponents(i).Export Application.ThisWorkbook.Path & _
                                            "\git\" & name & ".vba"
            End If
        End If
    Next i
End With

End Sub

Sub ImportCodeModules()
Dim i As Integer
Dim ModuleName As String

With ThisWorkbook.VBProject
    For i = .VBComponents.count To 1 Step -1

        ModuleName = .VBComponents(i).CodeModule.name

        If ModuleName <> "VersionControl" Then
            If .VBComponents(i).Type <> vbext_ct_Document Then
                .VBComponents.Remove .VBComponents(ModuleName)
                .VBComponents.Import Application.ThisWorkbook.Path & _
                                         "\git\" & ModuleName & ".vba"
            End If
        End If
    Next i
End With

End Sub

Und dann im Arbeitsbuchmodul:

Private Sub Workbook_Open()

    ImportCodeModules

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    SaveCodeModules

End Sub
6
przemo_li

Wenn Sie die Antwort von @Demosthenex noch einen Schritt weiterführen möchten, wenn Sie den Code in Ihren Microsoft Excel-Objekten und -Benutzerformularen nachverfolgen möchten, müssen Sie ein wenig knifflig werden.

Zuerst habe ich meine SaveCodeModules()-Funktion geändert, um die verschiedenen Arten von Code zu berücksichtigen, die ich exportieren möchte:

Sub SaveCodeModules(dir As String)

'This code Exports all VBA modules
Dim moduleName As String
Dim vbaType As Integer

With ThisWorkbook.VBProject
    For i = 1 To .VBComponents.count
        If .VBComponents(i).CodeModule.CountOfLines > 0 Then
            moduleName = .VBComponents(i).CodeModule.Name
            vbaType = .VBComponents(i).Type

            If vbaType = 1 Then
                .VBComponents(i).Export dir & moduleName & ".vba"
            ElseIf vbaType = 3 Then
                .VBComponents(i).Export dir & moduleName & ".frm"
            ElseIf vbaType = 100 Then
                .VBComponents(i).Export dir & moduleName & ".cls"
            End If

        End If
    Next i
End With

End Sub

Die UserForms können wie VBA-Code exportiert und importiert werden. Der einzige Unterschied besteht darin, dass beim Export eines Formulars zwei Dateien erstellt werden (Sie erhalten für jedes Benutzerformular einen .frm und eine .frx-Datei). Eine davon enthält die von Ihnen geschriebene Software und die andere ist eine binäre Datei, die (ich bin mir ziemlich sicher) das Layout des Formulars definiert.

Microsoft Excel-Objekte (MEOs) (dh Sheet1, Sheet2, ThisWorkbook usw.) können als .cls-Datei exportiert werden. Wenn Sie jedoch möchten, dass dieser Code wieder in Ihre Arbeitsmappe aufgenommen wird, wenn Sie versuchen, ihn auf dieselbe Weise wie ein VBA-Modul zu importieren, wird eine Fehlermeldung angezeigt, wenn das Arbeitsblatt bereits in der Arbeitsmappe vorhanden ist. 

Um dieses Problem zu umgehen, habe ich mich entschieden, die .cls-Datei nicht in Excel zu importieren, sondern stattdessen die .cls-Datei als String in Excel zu lesen. Dann fügen Sie diese Zeichenfolge in das leere MEO ein. Hier sind meine ImportCodeModules:

Sub ImportCodeModules(dir As String)

Dim modList(0 To 0) As String
Dim vbaType As Integer

' delete all forms, modules, and code in MEOs
With ThisWorkbook.VBProject
    For Each comp In .VBComponents

        moduleName = comp.CodeModule.Name

        vbaType = .VBComponents(moduleName).Type

        If moduleName <> "DevTools" Then
            If vbaType = 1 Or _
                vbaType = 3 Then

                .VBComponents.Remove .VBComponents(moduleName)

            ElseIf vbaType = 100 Then

                ' we can't simply delete these objects, so instead we empty them
                .VBComponents(moduleName).CodeModule.DeleteLines 1, .VBComponents(moduleName).CodeModule.CountOfLines

            End If
        End If
    Next comp
End With

' make a list of files in the target directory
Set FSO = CreateObject("Scripting.FileSystemObject")
Set dirContents = FSO.getfolder(dir) ' figure out what is in the directory we're importing

' import modules, forms, and MEO code back into workbook
With ThisWorkbook.VBProject
    For Each moduleName In dirContents.Files

        ' I don't want to import the module this script is in
        If moduleName.Name <> "DevTools.vba" Then

            ' if the current code is a module or form
            If Right(moduleName.Name, 4) = ".vba" Or _
                Right(moduleName.Name, 4) = ".frm" Then

                ' just import it normally
                .VBComponents.Import dir & moduleName.Name

            ' if the current code is a Microsoft Excel object
            ElseIf Right(moduleName.Name, 4) = ".cls" Then
                Dim count As Integer
                Dim fullmoduleString As String
                Open moduleName.Path For Input As #1

                count = 0              ' count which line we're on
                fullmoduleString = ""  ' build the string we want to put into the MEO
                Do Until EOF(1)        ' loop through all the lines in the file

                    Line Input #1, moduleString  ' the current line is moduleString
                    If count > 8 Then            ' skip the junk at the top of the file

                        ' append the current line `to the string we'll insert into the MEO
                        fullmoduleString = fullmoduleString & moduleString & vbNewLine

                    End If
                    count = count + 1
                Loop

                ' insert the lines into the MEO
                .VBComponents(Replace(moduleName.Name, ".cls", "")).CodeModule.InsertLines .VBComponents(Replace(moduleName.Name, ".cls", "")).CodeModule.CountOfLines + 1, fullmoduleString

                Close #1

            End If
        End If

    Next moduleName
End With

End Sub

Falls Sie durch die Eingabe dir mit diesen beiden Funktionen verwirrt sind, ist dies nur Ihr Code-Repository! So würden Sie diese Funktionen wie aufrufen:

SaveCodeModules "C:\...\YourDirectory\Project\source\"
ImportCodeModules "C:\...\YourDirectory\Project\source\"
6
dslosky

Ich benutze git, und heute habe ich dieses (git-xlsx-textconv) nach Python portiert, da mein Projekt auf Python-Code basiert und mit Excel-Dateien interagiert. Dies funktioniert zumindest für .xlsx -Dateien, aber ich denke, es wird auch für .xls funktionieren. Hier ist der Github-Link. Ich habe zwei Versionen geschrieben, eine mit jeder Zeile in einer eigenen Zeile, und eine andere, in der sich jede Zelle in einer eigenen Zeile befindet (die letzte wurde geschrieben, weil git diff zumindest in der Standardeinstellung nicht gerne lange Zeilen umgibt unter Windows).

Dies ist meine .gitconfig -Datei (dadurch kann sich das different-Skript im Repo meines Projekts befinden):

[diff "xlsx"]
    binary = true
    textconv = python `git rev-parse --show-toplevel`/src/util/git-xlsx-textconv.py

wenn das Skript für viele verschiedene Repos verfügbar sein soll, verwenden Sie etwa Folgendes:

[diff "xlsx"]
    binary = true
    textconv = python C:/Python27/Scripts/git-xlsx-textconv.py

meine .gitattributes Datei:

*.xlsx diff=xlsx
3
nmz787

Sie könnten das folgende Snippet in Ihrer Arbeitsmappe haben:

Sub SaveCodeModules()

'This code Exports all VBA modules
Dim i%, sName$

    With ThisWorkbook.VBProject
        For i% = 1 To .VBComponents.Count
            If .VBComponents(i%).CodeModule.CountOfLines > 0 Then
                sName$ = .VBComponents(i%).CodeModule.Name
                .VBComponents(i%).Export "C:\Code\" & sName$ & ".vba"
            End If
        Next i
    End With
End Sub

Ich habe diesen Ausschnitt im Internet gefunden.

Anschließend können Sie Subversion verwenden, um die Versionskontrolle zu verwalten. Beispielsweise mithilfe der Befehlszeilenschnittstelle von Subversion mit dem Befehl 'Shell' in VBA. Das würde es tun. Ich denke sogar daran, das selbst zu tun :)

3
GUI Junkie

Wenn Sie sich eine Büroumgebung mit normalen nicht-technischen Anwendern anschauen, ist Sharepoint eine sinnvolle Alternative. Sie können Dokumentordner mit aktivierter Versionskontrolle sowie Einchecken und Auschecken einrichten. Macht es freindlier für normale büronutzer.

2
mattlant

als Antwort auf die Antwort von mattlant funktioniert sharepoint nur als Versionskontrolle, wenn die Versionskontrollfunktion in der Dokumentbibliothek aktiviert ist. Darüber hinaus ist zu beachten, dass Code, der andere Dateien über relative Pfade aufruft, nicht funktioniert. und schließlich werden alle Links zu externen Dateien unterbrochen, wenn eine Datei in sharepoint gespeichert wird.

1
SpyJournal

Verwenden Sie eines der Standard-Versionskontrolle-Tools wie SVN oder CVS. Einschränkungen hängen davon ab, was das Ziel ist. Abgesehen von einer kleinen Vergrößerung des Repositorys hatte ich keine Probleme

1
Dheer

Eigentlich gibt es nur eine Handvoll Lösungen, um Änderungen im Makrocode zu verfolgen und zu vergleichen - die meisten davon wurden hier bereits genannt. Ich habe im Internet gesucht und bin auf dieses neue, erwähnenswerte Werkzeug gestoßen: 

XLTools Versionskontrolle für VBA-Makros

  • versionskontrolle für Excel-Arbeitsblätter und VBA-Module
  • vorschau und Unterschiede ändern, bevor Sie eine Version festlegen
  • ideal für die Zusammenarbeit mehrerer Benutzer in derselben Datei (verfolgen, wer was/wann/Kommentare geändert hat)
  • versionen vergleichen und Änderungen im Code Zeile für Zeile hervorheben
  • geeignet für Benutzer, die nicht technisch versiert sind oder Excel-versiert sind
  • der Versionsverlauf wird im Git-Repository auf Ihrem eigenen PC gespeichert - jede Version kann problemlos wiederhergestellt werden 

VBA-Code-Versionen nebeneinander, Änderungen werden visualisiert

1
eriklind

Nachdem ich lange gesucht und viele verschiedene Tools ausprobiert hatte, habe ich hier meine Antwort auf das Vba-Versionskontrollproblem gefunden: https://stackoverflow.com/a/25984759/2780179

Es ist ein einfaches Excel-Addin, für das der Code gefunden werden kann hier

Es gibt keine doppelten Module nach dem Import. Es exportiert Ihren Code automatisch, sobald Sie Ihre Arbeitsmappe gespeichert haben, , ohne vorhandene Arbeitsmappen zu ändern . Er wird zusammen mit einem VBA-Code-Formatierer geliefert.

1
CodeKid

Ich möchte ein tolles Open-Source-Tool mit dem Namen Rubberduck empfehlen, das eine Versionskontrolle des VBA-Codes enthält. Probieren Sie es aus!

1
Yuxiang Wang

Ich habe das auch untersucht. Es scheint, dass der neueste Team Foundation Server 2010 ein Excel-Add-In enthält.

Hier ist ein Hinweis:

http://team-foundation-server.blogspot.com/2009/07/tf84037-there-was-problem-initializing.html

1
Jim Slavens

Sie sollten DiffEngineX ausprobieren. Es kann programmgesteuert und auch von der Befehlszeile aus mit Befehlszeilenargumenten aufgerufen werden. Es vergleicht nicht nur die Excel-Arbeitsblattzellen, sondern auch die in den Arbeitsmappen eingebetteten Visual Basic-Makros. Vergleicht auch Excel-definierte Namen und Kommentare, die bei vielen Freeware-Tools fehlen. Es kann von heruntergeladen werden

http://www.florencesoft.com/Excel-differenz-download.html

Ich bin sicher, dass Ihr Versionskontrollsystem über eine Option oder ein Feld verfügt, sodass Sie DiffEngineX automatisch mit Ihren ursprünglichen und geänderten Excel-Arbeitsmappen aufrufen können.

1
Marisa Poulian

Sie haben möglicherweise versucht, Microsoft Excel XML in einem ZIP-Container (.xlsx und .xslm) für die Versionskontrolle zu verwenden und festgestellt, dass der vba in vbaProject.bin gespeichert wurde (was für die Versionskontrolle unbrauchbar ist).

Die Lösung ist einfach.

  1. Öffnen Sie die Excel-Datei mit LibreOffice Calc
  2. In LibreOffice Calc
    1. Datei
    2. Speichern als
    3. Dateityp speichern: ODF-Arbeitsblatt (.ods)
  3. Schließen Sie LibreOffice Calc
  4. Benennen Sie die Dateierweiterung der neuen Datei von .ods in .Zip um
  5. Erstellen Sie einen Ordner für die Tabelle in einem von der GIT verwalteten Bereich
  6. entpacken Sie die Zip-Datei in den GIT-Ordner
  7. verpflichten sich zu GIT

Wenn Sie dies mit der nächsten Version des Arbeitsblatts wiederholen, müssen Sie sicherstellen, dass die Dateien des Ordners genau mit denen im Zip-Container übereinstimmen (und keine gelöschten Dateien zurücklassen).

0
Dave Saunders

Ich habe eine sehr einfache Lösung für diese Frage gefunden, die meinen Bedürfnissen entspricht. Ich füge am Ende aller Makros eine Zeile hinzu, die bei jedem Start eine *.txt-Datei mit dem gesamten Makrocode exportiert. Der Code:

ActiveWorkbook.VBProject.VBComponents("moduleName").Export"C:\Path\To\Spreadsheet\moduleName.txt"

(Gefunden in Tom's Tutorials , das auch einige Einstellungen abdeckt, die Sie möglicherweise benötigen, damit dies funktioniert.)

Da ich das Makro immer dann ausführen werde, wenn ich an dem Code arbeite, ist mir garantiert, dass git die Änderungen aufgreift. Der einzige ärgerliche Teil ist, dass, wenn ich eine frühere Version auschecken muss, ich manuell aus dem *.txt in die Kalkulationstabelle kopieren/einfügen muss.

0
LShaver

Es gibt auch ein Programm namens Beyond Compare, das einen ziemlich schönen Excel-Dateivergleich hat. Ich habe einen Screenshot auf Chinesisch gefunden, der dies kurz zeigt:

Beyond Compare - comparing two Excel files (Chinese)
Originalbildquelle

Es gibt eine 30-tägige Testversion auf ihrer Seite

0
mana

Hier ist ein GitHub-Projekt, das nur die Punkte 1 und 4 der OP-Frage löst: https://github.com/ColmBhandal/VbaMisc . Es ist eine VC -Lösung nur für die VBA-Module. Es kann leicht an jedes Projekt angepasst werden, indem die in GitHub zu sehende Projektstruktur repliziert wird und beliebige Module, die unter VC abgelegt werden sollen, zu einer im ExportImport-Modul definierten WhiteList hinzugefügt werden. Dieses Modul steuert den Export und Import einer Whitelist von VBA-Modulen, die möglicherweise sich selbst enthalten. Anweisungen zur Verwendung finden Sie im GitHub-Repo. 

0
Colm Bhandal

Mein Unternehmen erledigt die Automatisierung von Microsoft Office-Lösungen erheblich. Deshalb habe ich eine .DLL geschrieben, die den Quellcode einer Lösung jedes Mal exportiert, wenn eine Vorlage gespeichert wird. Es erstellt einen Ordner mit dem Namen Source als untergeordnetes Element des Ordners, in dem die Vorlage gespeichert ist, und erstellt unter Source einen Ordner mit demselben Namen wie das VBA-Projekt. Im Projektordner wird der gesamte Quellcode für Module, Klassen und Benutzerformulare exportiert. Dieses Arrangement wurde gewählt, um die Verwaltung der Quelle für große Sammlungen von Vorlagen zu erleichtern. Die DLL kann gesperrte Projekte entsperren, um Zugriff auf das VBA-Projekt zu erhalten, wenn Sie über eine lokale Konfigurationsdatei oder eine globale Konfigurationsdatei verfügen. Wenn dieses Tool verwendet wird, können die Entwickler nach Herzenslust mit Vorlagen arbeiten und ihr bevorzugtes Revisionskontrollwerkzeug verwenden, um ihre Arbeit zu verwalten. Wir verwenden Git hauptsächlich in unserer Umgebung und halten die vollständigen Binärdateien der Vorlage sowie die VBA-Ressourcen unter Revisionskontrolle.

0
Chad Knudson