Ir al contenido

Invocar código VBA compilado en tiempo de ejecución

Para ejecutar su código VBA compilado, debe llamarlo desde el código VBA normal de su libro mediante una función auxiliar.

Primero, abra el Editor de Visual Basic y pegue la siguiente función auxiliar en un módulo de su libro:

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

La función auxiliar CallXLSPadlockVBA toma dos parámetros:

  • ID: El nombre del Sub o Function compilado que desea invocar.
  • Param1: Un parámetro opcional que desea pasar al código compilado.

Imagine que su módulo VBA original contiene el siguiente código:

Sub Calculate()
Range("A4") = "Tom"
Range("B4") = 5000
Range("C4") = Range("B4") * 0.5
Range("D4") = Range("C4") + Range("B4")
End Sub

Después de trasladar este código al VBA Compiler, reemplazaría el sub original por una llamada a la función auxiliar:

Sub Calculate()
Dim res As Variant
res = CallXLSPadlockVBA("Calculate", "")
End Sub

Aquí indicamos el nombre del sub protegido, Calculate, y pasamos una cadena vacía como segundo parámetro porque en este caso no se utiliza. La variable res contendrá el resultado de la llamada, lo cual resulta útil sobre todo si el código invocado es una Function que devuelve un valor.

👉 Vea también: Aprenda a pasar más de un parámetro a su código compilado.