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

Preguntas similare

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:
Mostrar la cita
#2 Adriano
13/02/2005 - 15:30 | Informe spam
Gracias por la respuesta KL, lo analizo si es aplicable a mi sistema y
aviso.
En principio creería que no, porque justamente en el Open hago uso de
muchísimo código, y llamadas a otros procedimientos y funciones, pero igual
lo pruebo.
Actualmente en mi libro tengo más de 10 módulos con ya unas 100 subrutinas.
De todas maneras me sirve mucho tu aporte porque lo puedo aplicar a otras
tareas que tenía en mente para más adelante.

Saludos.

"KL" escribió en el mensaje
news:#
Mostrar la cita
que
Mostrar la cita
tiempo
Mostrar la cita
va
Mostrar la cita
el
Mostrar la cita
#3 KL
13/02/2005 - 16:15 | Informe spam
Adriano,

Otra forma (la mas comun despues de crear un ejecutable q es lo ideal en
este caso) de resolver tu problema es crear una especie de centralita usando
un fichero *.xls O sea, creas un fichero (digamos Inicio.xls) q al abrirse
chequeara si existe la libreria y abrira otro fichero (digamos
Principal.xls) o lanzara el batch (batch.exe) y luego abrira el
Principal.xls. Si necesitas ayuda con el codigo, dimelo.

Saludos,
KL

"Adriano" wrote in message
news:
Mostrar la cita
#4 Adriano
14/02/2005 - 18:00 | Informe spam
Ahhh ahh, esa sí es una buena idea y solución.
Gracias KL, no con el código todo bien, cualquier cosa te comento.

Saludos. Adriano

"KL" escribió en el mensaje
news:
Mostrar la cita
usando
Mostrar la cita
otras
Mostrar la cita
la
Mostrar la cita
y
Mostrar la cita
el
Mostrar la cita
los
Mostrar la cita
se
Mostrar la cita
tira
Mostrar la cita
Ads by Google
Search Busqueda sugerida