Kontroll om makron existerar

I detta tips visas hur vi kan kontrollera om makron (procedurer) existerar i en öppen arbetsbok eller inte. Vi har också möjlighet att kontrollera om ett VBA-projekt är låst och skyddat eller inte.

Glöm inte av att ange en referens "Microsoft Visual Basic for Applications Extensibility 5.3".
 

Option Explicit

 

Sub Makron_Arbetsbok()

   '© 2002 Alla rättigheter XL-Dennis

   Dim stBok As String  

   'Arbetsboken som ska kontrolleras måste vara öppen!

   stBok = "Bok1.xls"

 

   Call Kontroll_Makron(stBok)

 

   Select Case Kontroll_Makron(stBok)

   Case "Fel"

      MsgBox "Arbetsbokens VBA-projekt är skyddad.", vbInformation

   Case True

      MsgBox "Arbetsboken innehåller makron.", vbInformation

   Case False

      MsgBox "Arbetsboken innehåller inte makron.", vbInformation

   End Select  

End Sub

 

Function Kontroll_Makron(stBok As String) As Variant

   '© 2002 Alla rättigheter XL-Dennis

   Dim vbaProjekt As VBIDE.VBProject

   Dim vbaKomponent As VBIDE.VBComponent

   Dim wbBok As Workbook

 

   Set wbBok = Workbooks(stBok)

   Set vbaProjekt = wbBok.VBProject

 

   'Om VBA-projektet är skyddat och låst.

   If vbaProjekt.Protection = vbext_pp_locked Then

      Kontroll_Makron = "Fel"

      Exit Function

   End If

 

   'Makrokontroller sker genom att räkna antal rader 'text varje modul har.

   '">2" är för att inte räkna med deklarationen "Option Explicit".

   For Each vbaKomponent In vbaProjekt.VBComponents

      If vbaKomponent.CodeModule.CountOfLines > 2 Then

         Kontroll_Makron = True

         Exit Function

      End If

   Next vbaKomponent  

End Function