Hola, bueno estaba por ahi mirando codigos y me tope con aguna de estas funciones asi que las junte con algunas que conocia y usaba. Me gustaria que presenten otras maneras o simplemente comenten acerca de estas funciones para ver cual creen que es mejor y por que.
En mi opinion la numero 1 (IsEXE1) es la mejor de todas.
Option Explicit
Private Declare Function GetModuleHandle Lib "kernel32.dll" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Sub Form_Load()
MsgBox IsEXE0
MsgBox IsEXE1
MsgBox IsEXE2
MsgBox IsEXE3
End Sub
Private Function IsEXE0() As Boolean
On Error GoTo IDE
Debug.Print 1 / 0
IsEXE0 = True
IDE:
End Function
Private Function IsEXE1() As Boolean
Static bEXE As Boolean
If Not bEXE Then
bEXE = True
Debug.Assert IsEXE1() Or True
IsEXE1 = bEXE
End If
bEXE = False
End Function
Private Function IsEXE2() As Boolean
IsEXE2 = Not (App.EXEName = App.Title)
End Function
Private Function IsEXE3() As Boolean
If GetModuleHandle("vba6") = 0 Then
IsEXE3 = True
End If
End Function