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