Importar 'Macro Files'

18/05/2004 - 15:36 por lzrycki | Informe spam
Como parte de un desarrollo de Sistemas convencional,
desarrolle una aplicacion que entre otras cosas genera 1
archivo TXT con una Macro para ser ejecutada en EXCEL.

Para ejecutar la Macro, entro en Macros - Editor y ejecuto
la opcion de Archivo - Importar.

Mi pregunta a los expertos es :

Existe algun mecanismo directo que me permita Importar el
archivo TXT que contiene la Macro y ejecutarla
inmediatamente.

Agradezco las respuestas.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
20/05/2004 - 06:43 | Informe spam
hola !

... archivo TXT con una Macro para ... ejecutar.la ... Macros - Editor y ejecuto ... Archivo - Importar.
... mecanismo ... Importar el archivo TXT ... y ejecutarla inmediatamente.



== un ejemplo en [alg]un modulo de codigo en excel =Sub Importar_Macro() ' o pudiera ser en el 'Workbook_Open()' '
Dim ArchivoDeMacros As String
ArchivoDeMacros = "C:\Mis documentos\El archivo con la macro.txt"
If Dir(ArchivoDeMacros) <> "" Then
On Error Resume Next
With ActiveWorkbook
.VBProject.VBComponents.Import ArchivoDeMacros
Application.Run "La_macro"
End With
On Error GoTo 0
End If
End Sub

=> solo 'asegurate' de que "La_macro" [o su 'importacion'] NO se 'duplique' en 'el libro' ;)
saludos,
hector.
Respuesta Responder a este mensaje
#2 Leo
20/05/2004 - 07:41 | Informe spam
Gracias Hector
si tu solucion funciona me permitira resolver 'elegantemente' todas las salidas de mi Sistema hacia Excel en forma automatica

Nuevamente Gracias
Respuesta Responder a este mensaje
#3 Leo
20/05/2004 - 07:56 | Informe spam
Hector, no soy experto en VBA ,pero si bastante conocedor de Excel "standard" que uso fuertemente para Analisis de Datos y Estadisticas. Habitualmente trabajo en IBM Mainframe (MVS, TSO, CICS, DB2, etc ) o linea AS400

En relacion a

=> solo 'asegurate' de que "La_macro" [o su 'importacion'] NO se 'duplique' en 'el libro' ;
saludos
hector

no seria interesante agregar dentro de la Macro de Importacion de Macros un If acerca de la existencia en el workbook de la Macro a Importar (mejor dicho su nombre que en mi caso es: LZ02) y de existir solicitar su eliminacion para garantizar la correcta carga de la macro que se importa ?? Es eso posible ?

Te salud

Leo
Respuesta Responder a este mensaje
#4 Héctor Miguel
20/05/2004 - 09:35 | Informe spam
hola, Leo !

En relacion a
-
=> solo 'asegurate' de que "La_macro" [o su 'importacion'] NO se 'duplique' en 'el libro' ;)
... un If acerca de la existencia ... de la Macro ... su eliminacion para garantizar la correcta carga de la macro [...]



es posible... [aunque tiene sus 'visicitudes' :(( que te comento a continuacion]
Requiere: establecer una referencia [en vba] a la libreria =>Microsoft Visual Basic for Applications Extensibility<+ la version de la libreria 'depende' de la version [de excel] donde se ha de utilizar [p.e.]
1) en excel 97 => NO DEBE 'tener' numero de version.
2) en excel 2K en adelante => debiera funcionar 'sin problemas' [+/- sera la version 5.3]
3) en excel XP en adelante => REQUIERE [ademas] de un 'ajuste' [en caso de no 'tenerlo'] a las 'Fuentes de confianza'
el 'ajuste' es en: herramientas / macros / seguridad / [pestaña] fuentes de confianza y ...
'poner' una marca en: 'confiar en el acceso a proyectos de visual basic'
=> considerando que la 'importacion' del archivo [y la macro] 'genera' un modulo de codigo 'normal-exclusivo'...
copia las siguientes lineas en el modulo de codigo del libro...
______
Private Sub Workbook_Open()
Dim ArchivoDeMacros As String
ArchivoDeMacros = "C:\Mis documentos\El archivo con la macro.txt"
If Dir(ArchivoDeMacros) <> "" Then
Borrar_La_macro "LZ02"
On Error Resume Next
With ActiveWorkbook
.VBProject.VBComponents.Import ArchivoDeMacros
Application.Run "LZ02"
End With
On Error GoTo 0
End If
End Sub
Private Sub Borrar_La_macro(ByVal La_macro As String)
Dim Modulo As VBIDE.VBComponent, Modulos As VBIDE.VBComponents
Set Modulos = Me.VBProject.VBComponents
For Each Modulo In Modulos
If Modulo.Type = vbext_ct_StdModule Then
If Me.VBProject.VBComponents(Modulo.Name).CodeModule.ProcStartLine(La_macro, vbext_pk_Proc) <> 0 Then
Modulos.Remove Modulo
GoTo Salida
End If
End If
Next
Salida:
Set Modulos = Nothing
End Sub
¨¨¨¨¨¨¨¨¨¨¨¨¨
saludos,
hector.
Respuesta Responder a este mensaje
#5 leo
20/05/2004 - 10:21 | Informe spam
Gracias nuevamente Hector

Agregare el codigo que generaste y tomare en cuenta la version de Excel para 'ajustar', si aplica, la macro

Saludo

Leo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida