Error de Compilación - On Error

11/02/2005 - 13:38 por Adriano | Informe spam
Hola a todos, hago uso de las dlls y ocxs de Windows Common Controls y
Dialog Controls en mi proyecto.
Pero el hecho es que si no están instaladas en la PC donde se corre el
proyecto VBA, éste da un error de Compilación en Código Oculto (si es que
protegieron el Proyecto para no permitir su visualización).

Hice un On Error para hacer un trap en el Open del ThisWorkbook en donde le
quería avisar al usuario que ejecute un batch que simplemente copia los
ActiveX en Windows/System32 y sale funcionando.

Pero evidentemente VBA, antes de ejecutar compila, y el error es en tiempo
de compilación, por lo tanto al tirar el error el compilador, nunca se va a
ejecutar el código, incluyendo el On Error.

Es posible solucionar esto, o hay que conformarse con el error que tira el
compilador y que el usuario haga lectura de los famosos "Leame.txt"
avisándole ahí.
Encontré muy poco en la ayuda, y no parece solucionar esto.

Saludos.

Adriano
 

Leer las respuestas

#1 KL
12/02/2005 - 21:08 | Informe spam
Adriano,

Una forma de atacar el problema podria ser la de crear el codigo q usa las
librerias en cuestion sobre la marcha, despues de comprobar si existe la
libreria en el sistema. Te pongo un ejemplo del posible codigo .

Saludos,
KL

'-Inicio Codigo
Option Explicit

Private Sub Workbook_Open()
Dim Modulo As Object
Dim Componente As Object
Dim Fila As Integer
Dim x As Variant
Dim miMacro As String
Dim Mensaje1 As String
Dim Mensaje2 As String
Dim Libreria As String

miMacro = "MiMacro" 'nombre del macro a introducir.
Libreria = "C:\WINDOWS\system32\miLibreria.dll"
Mensaje1 = "Ejecute el batch primero!"
Mensaje2 = "Ya existe el nombre - " & miMacro _
& Chr(13) & "No se ha podido anadir codigo!"

'Comprueba si existe la libreria.
If Dir(Libreria) = "" Then
MsgBox Mensaje1
Exit Sub
Else
'Comprueba si existen procedimientos o
'variables con el mismo nombre.
With ActiveWorkbook
For Each Componente In .VBProject.VBComponents
With Componente.CodeModule
x = .Find(Procedimiento, 1, 1, .CountOfLines, _
1, False, False)
If x Then
MsgBox Mensaje2, vbCritical + vbOKOnly
Exit Sub
End If
End With
Next Componente

'Crea Modulo
Application.VBE.MainWindow.Visible = False
Set Modulo = .VBProject.VBComponents.Add(1)

'Introduce el codigo
With Modulo.CodeModule
Fila = .CountOfLines
.InsertLines Fila + 1, "Sub " & miMacro & "()"
.InsertLines Fila + 2, "MsgBox ""Hola!"""
.InsertLines Fila + 3, "End Sub"
End With
End With
End If
End Sub
'-Fin Codigo

"Adriano" wrote in message
news:
Hola a todos, hago uso de las dlls y ocxs de Windows Common Controls y
Dialog Controls en mi proyecto.
Pero el hecho es que si no están instaladas en la PC donde se corre el
proyecto VBA, éste da un error de Compilación en Código Oculto (si es que
protegieron el Proyecto para no permitir su visualización).

Hice un On Error para hacer un trap en el Open del ThisWorkbook en donde
le
quería avisar al usuario que ejecute un batch que simplemente copia los
ActiveX en Windows/System32 y sale funcionando.

Pero evidentemente VBA, antes de ejecutar compila, y el error es en tiempo
de compilación, por lo tanto al tirar el error el compilador, nunca se va
a
ejecutar el código, incluyendo el On Error.

Es posible solucionar esto, o hay que conformarse con el error que tira el
compilador y que el usuario haga lectura de los famosos "Leame.txt"
avisándole ahí.
Encontré muy poco en la ayuda, y no parece solucionar esto.

Saludos.

Adriano


Preguntas similares