Beste måten å gjøre Versjonskontroll for MS Excel

stemmer
148

Hva versjonskontrollsystemer har du brukt med MS Excel (2003/2007)? Hva vil du anbefale og hvorfor? Hvilke begrensninger har du funnet din topp karakter versjonskontrollsystem?

For å sette dette i perspektiv, her er et par av bruksmåter:

  1. versjonskontroll for VBA-moduler
  2. mer enn én person arbeider med et Excel-regneark, og de kan gjøre endringer i samme regneark, som de ønsker å fusjonere og integrere. Dette regnearket kan ha formler, data, diagrammer osv
  3. brukerne ikke er for teknisk og færre versjonskontrollsystemer brukt bedre
  4. Space begrensningen er en vurdering. Ideelt sett bare inkrementelle endringer lagres i stedet for hele Excel-regneark.
Publisert på 25/09/2008 klokken 03:31
kilden bruker
På andre språk...                            


25 svar

stemmer
1

Bruk noen av de vanlige versjonen styringsverktøy som SVN eller CVS. Begrensninger vil avhenge av hva målet. Bortsett fra en liten økning i størrelsen på depotet, jeg did'nt møte eventuelle problemer

Svarte 25/09/2008 kl. 03:44
kilden bruker

stemmer
8

Det avhenger av om du snakker om data, eller koden som finnes i et regneark. Mens jeg har en sterk motvilje mot Microsofts Visual Source og normalt ville ikke anbefalt det, gjør det integreres lett med både Access og Excel, og gir kildekontroll av moduler.

[Faktisk integrasjonen med Access, omfatter spørringer, rapporter og moduler som individuelle objekter som kan versjon]

MSDN linken er her .

Svarte 25/09/2008 kl. 03:44
kilden bruker

stemmer
-1

Det avhenger av hvilket nivå av integrasjon du vil, har jeg brukt Subversion / TortoiseSVN som synes greit for enkel bruk. Jeg har også lagt inn søkeord, men det synes å være en fare for fil korrupsjon. Det er et alternativ i Subversion for å gjøre søkeord erstatninger fast lengde og så vidt jeg forstår vil det fungere hvis fast lengde er enda, men ikke rart. I alle tilfelle du ikke får noen nyttige slags diff funksjonalitet, tror jeg det er kommersielle produkter som vil gjøre 'diff'. Jeg fant noe som gjorde diff basert på konvertering av ting til ren tekst og sammenligne det, men det var ikke veldig hyggelig.

Svarte 25/09/2008 kl. 03:45
kilden bruker

stemmer
-1

Det skal fungere med de fleste VCS (avhengig av andre kriterier du kan velge SVN, CVS, darc, TFS, etc), men det vil faktisk hele filen (fordi det er et binært format), noe som betyr at "hva endret" Spørsmålet er ikke så lett å svare på.

Du kan fortsatt stole på loggmeldinger hvis folk fullføre dem, men du kan også prøve de nye XML baserte formater fra Office 2007 for å få litt mer synlig (selv om det fortsatt vil være vanskelig å luke gjennom tonnevis av XML, pluss AFAIK XML-filen er zippet på disken, så du trenger en pre-commit krok for å pakke den ut for tekst diff skal fungere riktig).

Svarte 25/09/2008 kl. 03:52
kilden bruker

stemmer
2

Hvis du ser på et kontor innstillingen med vanlig kontor ikke tekniske brukere enn Sharepoint er et levedyktig alternativ. Du kan sette opp dokumentmapper med versjonskontroll aktivert og innsjekkinger og kassene. Gjør det freindlier for vanlige kontorbrukere.

Svarte 25/09/2008 kl. 03:55
kilden bruker

stemmer
4

En ting du kan gjøre er å ha følgende tekstutdrag i arbeidsboken:

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

Jeg fant denne tekstutdrag på Internett.

Etterpå kan du bruke Subversion til å opprettholde versjonskontroll. For eksempel ved å bruke kommandogrensesnittet av Subversion med 'skall' kommando VBA. Det ville gjøre det. Jeg selv tenker på å gjøre dette selv :)

Svarte 25/09/2008 kl. 06:16
kilden bruker

stemmer
7

Jeg er ikke klar over et verktøy som gjør dette også, men jeg har sett en rekke hjemmelaget løsninger. Den røde tråden med disse er å minimalisere de binære data er under versjonskontroll og maksimal tekstdata for å utnytte kraften i konvensjonelle systemer SCC. Å gjøre dette:

  • Behandle arbeidsboken som alle andre program. Separat logikk, config og data.
  • Egen kode fra arbeidsboken.
  • Bygg UI programmatisk.
  • Skriv en bygge skript for å rekonstruere arbeidsboken.
Svarte 25/09/2008 kl. 07:19
kilden bruker

stemmer
1

som svar på mattlant svar - Sharepoint vil fungere godt som et versjonskontroll kun hvis versjonskontroll-funksjonen er slått på i dokumentbiblioteket. i tillegg være oppmerksom på at noen kode som kaller andre filer ved relative stier wont arbeide. og til slutt noen linker til eksterne filer vil bryte når en fil lagres i Sharepoint.

Svarte 29/09/2008 kl. 02:16
kilden bruker

stemmer
58

Jeg har bare sette opp et regneark som bruker Bazaar, med manuell checkin / ut via TortiseBZR. Gitt at temaet hjalp meg med redde del, ønsket jeg å legge min løsning her.

Løsningen for meg var å lage et regneark som eksporterer alle moduler på lagre, og fjerner og re-importerer modulene på åpne. Ja, dette kan være potensielt farlig for konvertering av eksisterende regneark.

Dette tillater meg å redigere makroer i modulene via Emacs (ja, emacs) eller direkte i Excel, og forplikte mitt BZR depot etter store endringer. Fordi alle modulene er tekstfiler, standard diff-stil kommandoer i BZR jobbe for mine kilder unntatt Excel-filen selv.

Jeg har setup en katalog for min BZR depotet, X: \ Data \ MySheet. I repo er MySheet.xls og en .vba fil for hver av mine moduler (dvs: Module1Macros). I regnearket mitt Jeg har lagt til en modul som er unntatt fra eksport / import syklus kalt "VersionControl". Hver modul som skal eksporteres og re-importert må slutte på "Makroer".

Innholdet i "VersionControl" modul:

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

Deretter må vi sette opp hendelses kroker for åpne / lagre for å kjøre disse makroene. I koden betrakteren, høyreklikk på "Thisworkbook" og velg "Vis kode". Du må kanskje trekke ned valgboksen på toppen av koden vinduet for å endre fra "(Generelt)" sikte på å "arbeidsbok" visning.

Innholdet i "arbeidsbok" view:

Private Sub Workbook_Open()

ImportCodeModules

End Sub

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

SaveCodeModules

End Sub

Jeg skal etablere seg i denne arbeidsflyten i løpet av de neste ukene, og jeg skal legge om jeg har noen problemer.

Takk for deling av VBComponent koden!

Svarte 05/01/2010 kl. 00:28
kilden bruker

stemmer
38

TortoiseSVN er en utrolig god Windows-klient for versjonskontrollsystemet Subversion. En funksjon som jeg nettopp oppdaget at det har er at når du klikker for å få en diff mellom versjoner av en Excel-fil, vil det åpne begge versjoner i Excel og markere (i rødt) cellene som ble endret. Dette gjøres gjennom magi av en vbs script, beskrevet her .

Du kan finne dette nyttig selv hvis du ikke bruker TortoiseSVN.

Svarte 07/01/2010 kl. 13:52
kilden bruker

stemmer
1

Jeg har vært på jakt i dette også. Det apears at den nyeste Team Foundation Server 2010 kan ha en Excel Add-In.

Her er et hint:

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

Svarte 27/10/2010 kl. 20:35
kilden bruker

stemmer
1

Du bør prøve DiffEngineX. Det kan kalles programmatisk, og også fra kommandolinjen tar kommandolinjeargumentene. Den sammenligner ikke bare Excel regneark celler, men også Visual Basic-makroer innebygd i arbeidsbøker. Også sammen Excel definerte navn og kommentarer, som mange freeware verktøy glipp av. Den kan lastes ned fra

http://www.florencesoft.com/excel-differences-download.html

Jeg er sikker på at din versjon kontrollsystem har opsjon eller boksen slik at du kan automatisk ringe DiffEngineX med originale og modifiserte Excel-arbeidsbøker.

Svarte 04/01/2012 kl. 11:33
kilden bruker

stemmer
0

Det er også et program som heter Beyond Compare som har en ganske fin Excel-fil sammenligne. Jeg fant et skjermbilde i kinesisk som kort viser:

Utover sammenlign - sammenligne to excel-filer (kinesisk)
Opprinnelige bildekilde

Det er en 30 dagers prøveversjon på sin side

Svarte 04/01/2012 kl. 11:46
kilden bruker

stemmer
-1

Jeg skrev en revisjon kontrollert regneark ved hjelp av VBA. Det er rettet mer for ingeniør rapporter der du har flere personer som jobber på en Bill Of Material eller Schedule og så på et tidspunkt du ønsker å lage et øyeblikksbilde revisjon som viser legger, del og oppdateringer fra forrige rev.

Merk: Det er en makro aktivert arbeidsbok som du må logge deg på for å laste ned fra nettstedet mitt (du kan bruke OpenID)

All koden er ulåst.

Rev Kontrollert regneark

Svarte 05/01/2012 kl. 03:36
kilden bruker

stemmer
0

Du har kanskje prøvd å bruke Microsofts Excel XML i zip beholder (.xlsx og .xslm) for versjonskontroll og fant VBA ble lagret i vbaProject.bin (som er ubrukelig for versjonskontroll).

Løsningen er enkel.

  1. Åpne Excel-fil med Libreoffice Calc
  2. I Libreoffice Calc
    1. Fil
    2. Lagre som
    3. Lagre som type: ODF-regneark (ODS)
  3. Lukk Libreoffice Calc
  4. endre navn filtypen den nye filen er fra ODS til ZIP
  5. opprette en mappe for regnearket i en GIT opprettholdt område
  6. Pakk ut zip inn det GIT mappe
  7. forplikte seg til GIT

Når du gjentar dette med neste versjon av regnearket må du sørge for at du gjør for mappen filene nøyaktig matche de i zip beholder (og ikke la noen slettede filer bak).

Svarte 06/07/2012 kl. 04:48
kilden bruker

stemmer
5

Arbeide på @Demosthenex arbeid, @Tmdean og @Jon Crowell uvurderlige kommentarer! (1 dem)

Jeg sparer modul filer i git \ dir ved siden arbeidsbok plassering. Endre det til din smak.

Dette vil ikke spore endringer i arbeidsbok kode. Så det er opp til deg å synkronisere dem.

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

Og så i arbeidsbok modul:

Private Sub Workbook_Open()

    ImportCodeModules

End Sub

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

    SaveCodeModules

End Sub
Svarte 07/03/2014 kl. 14:25
kilden bruker

stemmer
1

Etter å ha søkt for aldre og prøver ut mange forskjellige verktøy, har jeg funnet mitt svar til VBA versjonskontroll problemet her: https://stackoverflow.com/a/25984759/2780179

Det er en enkel excel-tillegget for der koden kan finnes her

Det er ingen dupliserte moduler etter import. Den eksporterer koden din automatisk, så snart du lagrer arbeidsboken, uten å endre eksisterende arbeidsbøker . Den kommer sammen med en VBA-kode formaterings.

Svarte 11/10/2014 kl. 22:50
kilden bruker

stemmer
5

Tar @Demosthenex er svaret et skritt videre, hvis du ønsker å også holde styr på koden i Microsoft Excel-objekter og UserForms du må få litt kinkig.

Først endret jeg min SaveCodeModules()funksjon å ta hensyn til de ulike typer code Jeg planlegger å eksportere:

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

De UserForms kan eksporteres og importeres akkurat som VBA-kode. Den eneste forskjellen er at to filer vil bli opprettet når et skjema eksporteres (du får en .frmog en .frxfil for hver Userform). En av disse holder programvaren du har skrevet, og den andre er en binær fil som (jeg er ganske sikker på) definerer utformingen av skjemaet.

Microsoft Excel Objekter (Meos) (betydning Sheet1, Sheet2, ThisWorkbooketc) kan eksporteres som en .clsfil. Men når du ønsker å få denne koden tilbake i arbeidsboken, hvis du forsøker å importere den på samme måte som du ville en VBA-modul, vil du få en feilmelding hvis det arket allerede finnes i arbeidsboken.

For å komme rundt dette problemet, bestemte jeg meg for ikke å prøve å importere .cls fil i Excel, men å lese .clsfilen til excel som en streng i stedet, så lim inn denne strengen i tomt MEO. Her er mine 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

I tilfelle du forvirret av dirinnspill til begge disse funksjonene, er det bare din kode depotet! Så, du vil kalle disse funksjonene som:

SaveCodeModules "C:\...\YourDirectory\Project\source\"
ImportCodeModules "C:\...\YourDirectory\Project\source\"
Svarte 08/05/2015 kl. 14:37
kilden bruker

stemmer
3

Jeg bruker git , og i dag har jeg portet dette (git-xlsx-TextConv) til Python, siden prosjektet mitt er basert på Python-kode, og den kommuniserer med Excel-filer. Dette fungerer i minst .xlsx -filer, men jeg tror det vil fungere for .xls også. Her er det github link. Jeg skrev to versjoner, en med hver rad på en egen linje, og en annen der hver celle er på en egen linje (sistnevnte ble skrevet fordi git diff ikke liker å vikle lange linjer som standard, i hvert fall her i Windows).

Dette er min .gitconfig fil (dette gjør at forskjellige skript for å ligge i min prosjektets repo):

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

Hvis du vil at skriptet skal være tilgjengelig for mange forskjellige repos, og deretter bruke noe sånt som dette:

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

mine .gitattributes fil:

*.xlsx diff=xlsx
Svarte 16/05/2015 kl. 07:02
kilden bruker

stemmer
0

Mitt firma gjør en betydelig mengde arbeid i å automatisere Microsoft Office-løsninger så jeg skrev en DLL som vil eksportere kilden til en løsning hver gang en mal er lagret. Det skaper en mappe som heter Source som et barn av mappen der malen er lagret, og under Source det skaper en mappe med samme navn som VBA Project. I prosjektmappen eksporterer det hele kildekoden for moduler, klasser og brukerskjemaer. Denne ordningen ble valgt for å gjøre det enkelt å administrere kilden for store samlinger av maler. DLL er i stand til å låse opp låste prosjekter for å få tilgang til VBA-prosjekt hvis du har en lokal konfigurasjonsfil eller en global konfigurasjonsfil tilgjengelig. Med dette verktøyet i bruk, kan utviklerne jobbe med maler til deres hjerter innhold og bruke sin favoritt revisjonskontroll verktøy for å administrere sitt arbeid. Vi bruker Git primært i vårt miljø, og vi holder full mal binærfiler samt ressursene VBA under revisjon kontroll.

Svarte 07/01/2016 kl. 15:21
kilden bruker

stemmer
6

La meg oppsummere hva du ønsker å versjonskontroll og hvorfor:

  1. Hva:

    • Code (VBA)
    • Regneark (formler)
    • Regneark (verdier)
    • diagrammer
    • ...
  2. Hvorfor:

    • revisjonslogg
    • Samarbeid
    • Versjon sammenligning ( "diffing")
    • sammenslåing

Som andre har skrevet her, det er et par løsninger på toppen av eksisterende versjonskontrollsystemer som:

  • Git
  • Mercurial
  • Subversion
  • Basar

Hvis din eneste bekymring er VBA-kode i arbeidsbøkene, da tilnærmingen Demosthenex ovenfor foreslår eller VbaGit ( https://github.com/brucemcpherson/VbaGit ) fungerer veldig bra å jobbe og er relativt enkle å gjennomføre. Fordelene er at du kan stole på velprøvde versjonskontrollsystemer og valgte en i henhold til dine behov (ta en titt på https://help.github.com/articles/what-are-the-differences-between-svn-and -git / for en kort sammenligning mellom Git og Subversion).

Hvis du ikke bare bekymre kode, men også om dataene i din ark ( "hardkodet" verdier og formelresultater), kan du bruke en lignende strategi for at: serienummererer innholdet i din ark inn i noen tekstformat (via Range.Value) og bruke en eksisterende versjonskontroll. Her er en veldig god blogginnlegg om dette: https://wiki.ucl.ac.uk/display/~ucftpw2/2013/10/18/Using+git+for+version+control+of+spreadsheet+models+-+part + 1 + i + 3

Imidlertid er arket sammenligning et ikke-triviell algoritmisk problem. Det finnes noen verktøy rundt, for eksempel Microsofts regneark Sammenlign ( https://support.office.com/en-us/article/Overview-of-Spreadsheet-Compare-13fafa61-62aa-451b-8674-242ce5f2c986 ), Exceldiff ( http://exceldiff.arstdesign.com/ ) og DiffEngineX ( https://www.florencesoft.com/compare-excel-workbooks-differences.html ). Men det er en annen utfordring å integrere disse sammenlignet med et versjonskontrollsystem som Git.

Til slutt, må du avgjøre om en arbeidsflyt som passer dine behov. For en enkel, skreddersydd Git for Excel arbeidsflyt, ta en titt på https://www.xltrail.com/blog/git-workflow-for-excel .

Svarte 04/04/2016 kl. 11:06
kilden bruker

stemmer
1

Egentlig er det bare en håndfull av løsninger for å spore og sammenligne endringer i makrokoden - de fleste av dem ble kalt her allerede. Jeg har vært surfer på nettet og kom over dette nye verktøyet verdt å nevne:

XLTools Versjonskontroll for VBA-makroer

  • versjonskontroll for Excel ark og VBA-moduler
  • forhåndsvisning og diff endringer før du forplikter deg en versjon
  • stor for samarbeid av flere brukere på samme fil (spor som endret hva / når / kommentarer)
  • sammenligne versjoner og markere endringer i kode linje for linje
  • egnet for brukere som ikke er teknologisk avanserte, eller Excel-savvy for den saks skyld
  • versjonshistorikk lagres i Git-repository på din egen PC - noen versjon kan lett gjenopprettes

VBA kodeversjoner ved siden av hverandre, blir endringer visualisert

Svarte 12/04/2016 kl. 16:00
kilden bruker

stemmer
1

Jeg ønsker å anbefale en stor åpen kildekode-verktøy kalt Rubber som har versjonskontroll av VBA-kode bygget i. Prøv det!

Svarte 09/08/2016 kl. 18:08
kilden bruker

stemmer
0

Her er en GitHub prosjekt som løser bare peker 1. og 4. av OP er spørsmålet: https://github.com/ColmBhandal/VbaMisc . Det er en VC løsning for VBA-moduler bare. Den lett kan skreddersys til ethvert prosjekt ved å kopiere de prosjektstrukturen sett på GitHub & tilsette noen moduler å bli satt under VC til en hvite definert i ExportImport modulen. Den modulen styrer eksport og import av en hviteliste av VBA-moduler, potensielt inkludert seg selv. Se GitHub repo for instruksjoner om hvordan du bruker.

Svarte 05/11/2018 kl. 17:24
kilden bruker

stemmer
0

Jeg fant en veldig enkel løsning på dette spørsmålet som oppfyller mine behov. Jeg legger en linje til bunnen av alle mine makroer som eksporterer en *.txtfil med hele makrokoden hver gang det kjøres. Koden:

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

(Funnet på Toms Guider , som også dekker noen oppsett du kan trenge å få dette arbeidet.)

Siden jeg vil alltid kjøre makroen når jeg jobber med koden, jeg garantert at git vil plukke opp endringene. Den eneste irriterende er at hvis jeg trenger å kassa en tidligere versjon, må jeg manuelt kopiere / lime fra *.txtinn i regnearket.

Svarte 18/02/2019 kl. 19:08
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more