Åben altid MED MAKROER

Metode til at tvinge brugere til at åbne et regneark MED MAKROER

 

I den ideelle verden, kunne man via VBA, spærre for at brugere åbner dit regneark uden makroer...
Det er desværre umuligt at løse opgaven, da koden ikke kan startes da brugere netop åbner uden makroer.

Denne metode kan hindre almindelige brugere i at tilgå dit regneark uden makroer, men den kan ikke spærre for en erfaren VBA-kyndig bruger.
Den giver dog en rimelig god sikkerhed i dagligdagen.

Eksempel:
Dit regneark har 3 faner, Ark1, Ark2 og Ark3.
Når en bruger åbner dit regneark uden makroer, skal de ikke kunne se Ark2 og Ark3.
Dette løses ved at indsætte denne kode i THISWORKBOOK

Download et eksempel på at tvinge brugere til at åbne med makroer i Excel Åben altid med makroer i Excel

 

'***********Allan Thustrup Mortensen - Excel-regneark.dk *************
'*********************************************************************
Private Const UdenMakroArk = "Ark1"

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then Cancel = True
Cancel = True
MsgBox "Når du er færdig med at redigere i arket, skal du lukke arket" & vbCrLf & "Du vil blive spurgt om du vil gemme ændringerne", vbExclamation
End Sub

Private Sub Workbook_Open()
On Error Resume Next
For Each ws In Sheets
    ws.Visible = True
Next ws
If ThisWorkbook.Sheets.Count > 1 Then Sheets(UdenMakroArk).Visible = xlSheetVeryHidden
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next

If ThisWorkbook.Saved = False Then
    If MsgBox("Vil du gemme dine ændringer?", vbQuestion + vbYesNoCancel) = vbYes Then
        For Each ws In Sheets
            If ThisWorkbook.Sheets.Count > 1 Then
                If ws.Name = UdenMakroArk Then
                   ws.Visible = xlSheetVisible
                Else
                   ws.Visible = xlSheetVeryHidden
                End If
            End If
        Next ws
        Application.EnableEvents = False
        ThisWorkbook.Save
        Application.EnableEvents = True
        If Application.Workbooks.Count > 1 Then
            ThisWorkbook.Close False
        Else
            Application.Quit
        End If
    End If
End If
End Sub

 

Bemærk at du kan ændre navnet på det ark som bruger skal se hvis de åbner uden makroer.
Dette gøres i Private Const UdenMakroArk = "Ark1" som i stedet for 'Ark1' kan omdøbes til noget andet.

Prisen ved denne metode, er at projektmappen ikke kan gemmes på traditionel vis (du ser en infoboks når du forsøger at gemme), men gemmes når du ønsker at lukke filen. Dette er desværre nødvendigt for at opnå en brugbar effekt.
De ark som skjules for brugere som åbner uden makroer, kan ikke ses eller vises uden kendskab til VBA.

Opdateret 26-10-2017 21:03:48