We zijn binnen het bedrijf waar ik werk momenteel bezig om vanuit 2 werkomgevingen over te gaan naar uiteindelijk 1 werkomgeving.
In de oude werkomgeving draait Excel 2016. In de nieuwe Excel 365.
Ik merk dat er een verschil zit dat als ik een met macro's gevuld bestand laat openen vanuit Excel365, de macro's inactief zijn, als het openen van dat bestand wordt veroorzaakt door een andere macro. Dat heb ik niet bij Excel 2016. Is dit een wijziging binnen Excel, of heeft dit met iets anders te maken, zoals de veranderde werkomgeving? Het beheerbestand en werkbestand staan op dezelfde schijf, maar op een andere plek.
Ik gebruik onderstaande die vanuit het ene (beheer) Excelbestand een kopie maakt van zichzelf en die als werkbestand vanuit het beheerbestand geopend wordt. De VBA-beheermodule, wordt daaruit verwijderd, vanuit het nog steeds geopende beheerbestand.
| Sub Kopieer_Beheer() <br><br> 'doel: Dit beheer bestand opslaan als werkbestand. <br><br> 'stappen: <br><br> ' 1.het huidige werkbestand wordt eerst hernoemd en verplaatst als backupversie in dezelfde map als dit (beheer)bestand. <br><br> ' Mocht het nodig zijn, dan kan er altijd een vergelijking gemaakt worden en/of terug naar een historische situatie. <br><br> ' 2.dit beheer bestand wordt opgeslagen als werkbestand, op de locatie van het werkbestand. <br><br> ' 3.het werkbestand wordt geopend en deze VBA module heeft daar geen functie meer en wordt daar verwijderd. Nog steeds aangestuurd vanuit deze (beheer)-macro <br><br> ' 4.het werkbestand wordt opgeslagen, gesloten en krijgt vervolgens een Alleen-lezen attribuut en is daarmee geschikt om mee te werken. <br><br> Dim Backupmap As String <br><br> Dim wkb As Workbook <br><br> Dim itm As Variant <br><br> Const Doelmap As String = "K:[tussenliggend pad]\Doelmap" <br><br> Const Bestandsnaam As String = "Naam van het bestand" <br><br> Backupmap = ThisWorkbook.Path & "" <br><br> Application.ScreenUpdating = False <br><br> 'stap1 <br><br> Name Doelmap & Bestandsnaam & ".xlsm" As Backupmap & Bestandsnaam & " - backup per " & Format(Date + Time, "d-mmm-yyyy hh_mm_ss") & ".xlsm" <br><br> 'stap2 <br><br> ThisWorkbook.SaveCopyAs Doelmap & Bestandsnaam & ".xlsm" <br><br> 'stap3 <br><br> Set wkb = Workbooks.Open(Doelmap & Bestandsnaam & ".xlsm") <br><br> With wkb.VBProject <br><br> .VBComponents.Remove .VBComponents("Beheer") <br><br> End With <br><br> 'stap4 <br><br> wkb.Save <br><br> wkb.Close <br><br> SetAttr Doelmap & Bestandsnaam & ".xlsm", 1 'alleen-lezen maken<br><br> If Not ActiveWorkbook.Name = ThisWorkbook.Name Then ThisWorkbook.Activate <br><br>End Sub |
Dit script staat in de module "Beheer" en is dus in het werkbestand na uitvoering van dit script normaalgesproken niet meer aanwezig.
Het script werkt prima in Excel 2016, maar valt in Excel365 uit bij de regel
Set wkb = Workbooks.Open(Doelmap & Bestandsnaam & ".xlsm")
Het bestand wordt wel geopend, maar macro's zijn inactief. De betreffende 'beheer' module is dan ook niet benaderbaar / verwijderbaar.
Hoe krijg dit ook in Excel365 weer werkend?