Compiling sub routines


This sub routine CANNOT be renamed because it is triggered on the workbook opening. How do I compile in VBA compiler? What do I paste into the compiler window & what do I put back into the VBA editor in my original spreadsheet before compiling the exe?

Private Sub Workbook_Open()
ThisWorkbook.Unprotect (“password”)
For Each wsSht In Workbooks(“Local Book 1.xlsm”).Worksheets
If Not wsSht.Name = “Simon” Then wsSht.Visible = xlSheetVeryHidden
Next wsSht
ThisWorkbook.Protect “password”, True
End Sub


For Each isn’t supported by the VBA compiler. You should replace it with something like this:

Sub MyOpenWorkbook
 Application.ThisWorkbook.Unprotect ("password")
 For wsSht = 1 TO Application.Workbooks("Local Book 1.xlsm").Worksheets.Count 
  If Not Application.Workbooks("Local Book 1.xlsm").Worksheets(wsSht).Name = "Simon" Then Application.Workbooks("Local Book 1.xlsm").Worksheets(wsSht).Visible = xlSheetVeryHidden
 Application.ThisWorkbook.Protect("password", True)
End Sub     

Then, in your real VBA project, replace your code with:

' This function lets you call VBA macros compiled with XLS Padlock
Public Function CallXLSPadlockVBA(ID As String, Param1)
Set XLSPadlock = Application.COMAddIns("GXLSForm.GXLSFormula").Object
CallXLSPadlockVBA = XLSPadlock.PLEvalVBA(ID, Param1)
End Function

Private Sub Workbook_Open()
res = CallXLSPadlockVBA("MyOpenWorkbook", "")
End Sub


You are defeating the point…the software dont allow to open it so why encrypt your open routine ?Makes sense for important macros