Åben altid MED MAKROER

Åbn altid med makroer i Excel – tving aktivering af VBA

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.

Har du ikke mod på selv at implementere koden, kan du downloade et eksempel herunder.

Eksempel på brug af VBA-koden

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 / Denne_projektmappe

'***********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.

Forfatter: Allan Thustrup Mortensen