ActualizaŽción automática a base de macros

30/10/2009 - 09:58 por Jordi | Informe spam
Hola a todos, dispongo de 12 ficheros excel, cada uno de los cuales
tiene una macro para su actualización (Actualiza())
Ahora me gustaría saber cómo automatizart la ejecución de estas 12
macros de automatización. dispongo en otro excel una macro por cada
uno de los ficheros como esta
Public Sub ActualizaFich1()

'Rutina VB que actualiza Cuadro de Mando

Dim xlApp, StrArchivo

StrArchivo = "Rutadondeestaelfichero\fichero1.xls"

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.Workbooks.Open StrArchivo
xlApp.Run "Actualiza" 'rutina a a ejecutar
xlApp.Quit
Set xlApp = Nothing

End Sub

Pero cuando ejecuto unas cuantas, luego me aparece un mensaje de erro
de automatización con el código -2147417848 u otras veces me aparece
un mensaje de error haciendo referencia a algo con objetos OLE.
¿Alguien puede ayudar/indicarme la mejor manera de hacer esto?
Gracias!!!

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
31/10/2009 - 03:32 | Informe spam
hola, Jordi !

1) cuando dices VB te refieres a VB "stand-alone" (lenguaje de programacion) o al VBA (???)
2) si es VBA, no veo el caso de crear objetos de automatizacion (???)
3) si es VB, prueba creando una sola vez el objeto de automatizacion y abriendo un solo libro "maestro"
(o sea, un libro que desde la misma instancia de excel abra los demas y ejecute la macro en cada uno)

saludos,
hector.

__ OP __
...dispongo de 12 ficheros excel, cada uno de los cuales tiene una macro para su actualización (Actualiza())
... me gustaria saber como automatizart la ejecucion de estas 12 macros de automatizacion.
dispongo en otro excel una macro por cada uno de los ficheros como esta
Public Sub ActualizaFich1()
'Rutina VB que actualiza Cuadro de Mando
Dim xlApp, StrArchivo
StrArchivo = "Rutadondeestaelfichero\fichero1.xls"
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.Workbooks.Open StrArchivo
xlApp.Run "Actualiza" 'rutina a a ejecutar
xlApp.Quit
Set xlApp = Nothing
End Sub
Pero cuando ejecuto unas cuantas, luego me aparece un mensaje de erro de automatizacion con el codigo -2147417848
u otras veces me aparece un mensaje de error haciendo referencia a algo con objetos OLE.
Alguien puede ayudar/indicarme la mejor manera de hacer esto?
Respuesta Responder a este mensaje
#2 Jordi
31/10/2009 - 10:10 | Informe spam
On 31 oct, 03:32, "Héctor Miguel"
wrote:
hola, Jordi !

1) cuando dices VB te refieres a VB "stand-alone" (lenguaje de programacion) o al VBA (???)
2) si es VBA, no veo el caso de crear objetos de automatizacion (???)
3) si es VB, prueba creando una sola vez el objeto de automatizacion y abriendo un solo libro "maestro"
    (o sea, un libro que desde la misma instancia de excel abra los demas y ejecute la macro en cada uno)

saludos,
hector.

__ OP __

> ...dispongo de 12 ficheros excel, cada uno de los cuales tiene una macro para su actualización (Actualiza())
> ... me gustaria saber como automatizart la ejecucion de estas 12 macros de automatizacion.
> dispongo en otro excel una macro por cada uno de los ficheros como esta
> Public Sub ActualizaFich1()
> 'Rutina VB que actualiza Cuadro de Mando
> Dim xlApp, StrArchivo
> StrArchivo = "Rutadondeestaelfichero\fichero1.xls"
> Set xlApp = CreateObject("Excel.Application")
> xlApp.Visible = True
> xlApp.Workbooks.Open StrArchivo
> xlApp.Run "Actualiza" 'rutina a a ejecutar
> xlApp.Quit
> Set xlApp = Nothing
> End Sub
> Pero cuando ejecuto unas cuantas, luego me aparece un mensaje de erro de automatizacion con el codigo -2147417848
> u otras veces me aparece un mensaje de error haciendo referencia a algo con objetos OLE.
> Alguien puede ayudar/indicarme la mejor manera de hacer esto?



Realmente ese código lo tomé de un ejemplo de este grupo, pero estaba
en un fichero .vbs (VB), pero ahora quiero hacerlo desde un excel, y
no sé cuál debería ser la mejor forma de invocar a estas 12 macros de
actualización desde otro excel de forma secuencial e insertarle un
control de errores por si en caso de encontrar error en alguna
actualización, pase a la ejecución de la siguiente macro.
Espero que podais ayudarme. Muchas gracias. Un saludo.
Respuesta Responder a este mensaje
#3 Héctor Miguel
31/10/2009 - 20:41 | Informe spam
hola, Jordi !

... ese codigo... estaba en un fichero .vbs (VB), pero ahora quiero hacerlo desde un excel
y no se cual deberia ser la mejor forma de invocar a estas 12 macros... desde otro excel de forma secuencial
e insertarle un control de errores por si en caso de encontrar error en alguna... pase a la ejecución de la siguiente macro...



1) podrias poner en una matriz (vba) o en un rango de celdas los nombres de los archivos a procesar (es una ruta comun ?)
y un bucle for...next que abra los archivos, ejecute la macro y vuelva a cerrar el archivo (guardando los cambios) p.e.

dim ruta as string, archvos, n as byte
ruta = "ruta comun\a los archivos\"
archivos = array("libro1", "libro3", libro125")
for n = lbound(archivos) to ubound(archivos)
workbooks.open archivos(n) & ".xls"
' aqui corres o llamas a la macro ... '
activeworkbook.close true
next

2) para establecer algun control de errores, seria mejor si puedes especificar que tipo de errores esperarias encontrar (???)
o a falta de esta certeza, utilizar una instruccion previa a la ejecucion de macros del tipo: => on error resume next

saludos,
hector.

__ previos __
1) cuando dices VB te refieres a VB "stand-alone" (lenguaje de programacion) o al VBA (???)
2) si es VBA, no veo el caso de crear objetos de automatizacion (???)
3) si es VB, prueba creando una sola vez el objeto de automatizacion y abriendo un solo libro "maestro"
(o sea, un libro que desde la misma instancia de excel abra los demas y ejecute la macro en cada uno)

__ OP __

...dispongo de 12 ficheros excel, cada uno de los cuales tiene una macro para su actualización (Actualiza())
... me gustaria saber como automatizart la ejecucion de estas 12 macros de automatizacion.
dispongo en otro excel una macro por cada uno de los ficheros como esta
Public Sub ActualizaFich1()
'Rutina VB que actualiza Cuadro de Mando
Dim xlApp, StrArchivo
StrArchivo = "Rutadondeestaelfichero\fichero1.xls"
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.Workbooks.Open StrArchivo
xlApp.Run "Actualiza" 'rutina a a ejecutar
xlApp.Quit
Set xlApp = Nothing
End Sub
Pero cuando ejecuto unas cuantas, luego me aparece un mensaje de erro de automatizacion con el codigo -2147417848
u otras veces me aparece un mensaje de error haciendo referencia a algo con objetos OLE.
Alguien puede ayudar/indicarme la mejor manera de hacer esto?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida