Visual Basic para Aplicaciones - Abrir 60 filescon una macro automaticamente

Life is soft - evento anual de software empresarial
 
Vista:

Abrir 60 filescon una macro automaticamente

Publicado por Lorena (3 intervenciones) el 29/12/2005 20:18:10
Hola, Es mi primera vez trabajando con visual basic, he tratado de buscar ayuda pro estoda en ingles, y para mi nivel de ingles es bien dificil entender la terminologia.

En mi empresa, Tenemos un programa que genera ciertos reportes en CSV format a diario, luego esos archivos son gravados automaticamente en una carpeta, los tengo que abrir con una macro que cree uno por uno manualmente, como son 60 archivos por dia es algo bastante tedioso, y me imagino que debe haber algo para que la macro corra sola, darle una hora determinada o que alguien la active y listo.

necesito ayuda urgente...... debo terminar el proyecto esta semana por que el nuevo reporte debe estar funcionanado el 1 de Enero....

Muchas gracia ;-)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Abrir 60 filescon una macro automaticamente

Publicado por Petter.pe (77 intervenciones) el 30/12/2005 03:24:04
Hola, puedes crear una función a la cual le pases como parámetro el nombre de archvo e importes los .csv cada uno a una hoja de un archivo Excel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir 60 filescon una macro automaticamente

Publicado por Lorena (3 intervenciones) el 30/12/2005 16:17:47
el problema es que esos archivos deben ser separados porque corresponden uno para cada sucursal, si los junto se van a confundir, necesito mantener los 60 archivos pero cambiandole la extencion. Mira este es el proceso que cree. Podrias revisarlo y decirme que te parece??:
1- Start Excell
2- Open the 60 files
3- Run the Macros
4- Save the files
5- Close the files
-----------------------------------------------------------------------------------------------------------
Dim oExcel As Excel.ApplicationClass
Dim oBook As Excel.WorkbookClass
Dim oBooks As Excel.Workbooks

'Start Excel and open the workbook.
oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oBooks = oExcel.Workbooks
oBook = oBooks.Open("P:\N Y C Z R - Lorena Perez\DUTY PROJECT\TEST\USBRK5540.xls")

'Run the macros.
oExcel.Run ("DUTY")
oExcel.Run ("FillColBlanks")
oExcel.Run ("Cosmetic")

'Saving all Workbooks
'Public sub saveall ()
Dim WB As Workbooks
For Each WB In Workbooks
WB.Save
Next WB
Application.StatusBar = " all Workbooks Saved "

'Close th workbooks and quit excel
oBook.Close (False)
System.runtime.interopservices.marshal.releaseComObject (oBook)
oBook = Nothing
System.runtime.interopservices.marshal.releaseComObject (oBook)
oBook = Nothing
oExcel.Quit()
System.runtime.interopservices.marshal.releaseComObject (oExcel)
oExcel = Nothing
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir 60 filescon una macro automaticamente

Publicado por Mauricio Baeza (262 intervenciones) el 30/12/2005 16:27:20
Si tu tienes estas variables

Dim oExcel As Excel.ApplicationClass
Dim oBook As Excel.WorkbookClass
Dim oBooks As Excel.Workbooks

Significa que hiciste una referencia a las librerias de Excel, bien... despues en

'Start Excel and open the workbook.
oExcel = CreateObject("Excel.Application")

Significa que "creas" el objeto Excel, no esta mal, pero te recomiendo usar uno u otro metodo, en lo personal me gusta el segundo, pero te obliga a saber o por lo menos dominar mas las propiedades y metodos de Excel

Supongo que las macros hacen una tarea especifica, cual es?

'Run the macros.
oExcel.Run ("DUTY")
oExcel.Run ("FillColBlanks")
oExcel.Run ("Cosmetic")

Si estas programando desde VB, puedes hacer "todo" lo que hacemos con las macros, desde el mismo VB, con esto, "mantienes" siempre el control del proceso...

Si lo unico que quieres, es renombrar los CVS por XLS la cosa es mas facil, pero necesitaria nos dieras mas detalles...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir 60 filescon una macro automaticamente

Publicado por lorena (3 intervenciones) el 30/12/2005 17:27:11
El files contiene unalinea por factura, algunas facturas son agrupadas por # de entrada que es un tema de impuestos aui en Estados unidos, con el formato CSV, ese subtotal so queda definido muy claro, entonces decidi hacerlo en excell con la funcion subtotales, de esa forma el usuario puede desplegar el detalle de todas las facturas o solamente el total de la entrada.

Programa que realiza cada dia los reportes en CSV, genera un reporte para cada sucursal, y uno bien grande que agrupa toda la informacion.

Mi idea era que una persona en la manana corra la primera macro y todo el resto del proceso se automatice, terminando con el resultado de 60 files en XLS, despues de eso debo publicarlos en intranet.

Con respecto a Start Excel que sugeres?, yo no se como solucionar este problema, para mi es casi en chino es primera vez que uso VB. please sugiereme un modelo de VB que me permita iniciar el excel y abrir los 60 files.

Mi otra duda es debo escribir las Macros 60veces par poder hacerlo con todos los files o hay otra forma de hacerlo.

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir 60 filescon una macro automaticamente

Publicado por Mauricio Baeza (262 intervenciones) el 30/12/2005 17:40:05
Si, por lo que me comentas de los subtotales, es buena la decision de hacerlo en Excel con la buena herramientas de Subtotales, puedes hacerlo de dos maneras....

TODO el proceso directo desde VB, solo usarias Excel para mostrar los archivos finales o reportes totales...

Hacer los procesos desde Excel, con VBA, el usuario abre un archivo y automaticamente corremos la macro que genere los archivos...

En los dos casos en sencillo de hacer...

Si tienes cuenta en GMail podemos verlo por el GoogleTalk mi nombre de usuario es valedor74

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir 60 filescon una macro automaticamente

Publicado por Petter.pe (77 intervenciones) el 01/01/2006 04:52:20
Hola, tienes identificados tus procesos, te recomiendo que ellos los encapsules en un solo código en una sola función o sub, dado que para cada archivo debes hacer lo mismo.

La función recibirá como parámetro el nombre de archivo y ejecutará los procesos:

Open file
Convertir a .xls
Save the file
Close the file

Luego dicha función puedes llamarla para cada archivo desde una macro(function o sub).

Quedando la estructura por ejemplo algo así:

Function fConvertirCSVaXLS(NombreArchivo)
'...Open file
'... Convertir a .xls
'... Save the file
'...Close the file

end Function

'Macro convertir 60 archivos a XLS

sub Convertir60CSVaXLS

fConvertirCSVaXLS(NombreArchivo1.csv)
fConvertirCSVaXLS(NombreArchivo2.csv)
...

end sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

RE:Abrir 60 filescon una macro automaticamente

Publicado por audad (79 intervenciones) el 04/01/2006 02:11:25
un saludo...
porque no manejas como matriz... las 60 hojas...
podrias enviarme.... 3 hojas... para que pueda interpretarlas...
llegue a realizar... programas donde manejo con una sola macro mas de 5 hojas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir 60 filescon una macro automaticamente

Publicado por audad (1 intervención) el 04/01/2006 04:21:52
probe este codigo:

' HojaRes.xls nombre de la hoja de resumen
en esta hoja ponemos el path y nombre de los archivos

B2 D:\Sucursales\LaFlorida.xls ... donde "LaFlorida.xls" es la hoja 1
B3 D:\Sucursales\LosAngel.xls ... donde "LosAngel.xls" es la hoja 2
B4 D:\........
................
B62 D:\..................... el ultimo

abrimos una macro y copiamos:

Dim intHoja As Integer
While Cells(intHoja + 2, 2) <> ""
Workbooks.Open Filename:=Cells(intHoja + 2, 2)
Application.WindowState = xlMinimized
Workbooks("HojaRes.xls").Activate
intHoja = intHoja + 1
Wend
......
decia que con una matriz ... puedes manejar solo con numeros... sin importar el nombre de la hoja...
en esa hoja resumen... podemos manejar celdas especificas de las 60 hojas...
ah... ten cuidado con la memoria del computador... y espacio en disco duro
si te sirve.... nos escribes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar