Inicio > Microsoft Excel > elsamatilde > Macro para ejecutarla en varias hojas

Macro para ejecutarla en varias hojas

Experto:
Usuario:
Fecha: 05/02/2006
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
20/01/2006
danielg314, usuario preguntando en Microsoft Excel
Usuario
Hola Elsa, , ante todo recibe un crodial saludo y mis mejores deseos:
Tengo un gran problema y espero que me puedas colaborar con este:
El caso es el siguiente: me encuentro creando una hoja de calculo la cual me ayuda a organizar datos de un formato a otro; gracias al el nuevo ordenamiento puedo realizar varias operaciones, todo esto se ejecuta gracias a un boton que he colocado en la primera pagina; como este es un proceso repetitivo para mi, quiciera que la hoja pudiera hacer todo el procedimiento sin que yo tenga que estar copiando y pegando sobre la hoja que he diseñado.
Lo que me gustaria es que teniendo varios archivos de datos (todos con la misma forma)dentro de una carpeta de excel pudiera ejecutar la macro y esta hiciera lo siguiente:
1.que cuente el numero de archivos que hay dentro de esta carpeta para saber cuantas veces he de repetir el ciclo de ejecucion de la macro.

2.guardar una base de datos de los nombres de estos archivos para poder que el programa reconosca los nombres y el orden en que debe abrir cada archivo (para que no habra un mismo archivo dos veces)

3.abrir en orden cada uno de los archivos

4.que se ejecute el codigo ya existente.

5.Guardaran los resultados en un archivo de excel con un nuevo nombre

la verdad es que no se cual sea la forma de hacer esto, despues de mucho pensar decidi por preguntarte ya que pierdo mucho tiempo cortando, pegando y guardando los resultados con otro nombre. Si una persona hiciera esto exporadicamente no seria un problema, pero cuando uno lo tiene que hacer mas de 90 veces es bastante dispendioso.

De antemano te agradezco por la ayuda que puedas prestarme.

me despido con la esperanza de que puedas ayudarme prontantamente.
22/01/2006
danielg314, experto respondiendo en Microsoft Excel
Experto
Hola:
Interpreto que la macro debe hacer esto:
desde el libro A buscará en una lista el libro1, lo abrirá, copiará datos del libro A o al libro A (aclarar) y lo guardará con otro nombre.
Ahora buscará en la lista el libro2 y repetirá el proceso hasta completar la lista de libros.
La lista se armará por cada vez que se ejecute la macro tomando el contenido de una carpeta. ¿Cómo reconocerá o se establecerá el orden de libros a abrir?

Bueno, es bastante lo que solicitas, mejor me aclaras bien estos puntos.

Saludos
Elsa
23/01/2006
danielg314, usuario preguntando en Microsoft Excel
Usuario
Reenvio por aparente error

Hola, te agradezco tu pronta respuesta e interes.

exactamente:
Desde un libro A con una macro, sacare una lista de los libros existentes en la carpeta que estemos hubicados (descartando libro A), por ejemlo:
Libro1, Libro2, Libro3, Libro4...,LibroN
La macro contara el numero de elementos que hay en esta lista (N), Asi, podre saber cuantas veces debera ejecutarse el codigo (Abrir libro1 - ejecutar macro - guardar con un nombre nuevo).

El libro A:

1.hace una lista con los nombres de los elementos a abrir (libros existentes en la carpeta excluyendo Libro A)

2.cuenta el numero de elementos contenidos en la lista(para saber cuantas veces debo ejecutar el codigo)

la macro entrara en un ciclo y comenzara por abrir el Libro1, se ejecutara el codigo, con los cambios adquiridos por la ejecucion del codigo, se guardara Libro1 con un nuevo nombre: Libro1_R

Ahora la macro debera seguir con Libro2 y repetir el mismo proceso.
Asi sucesibamente hasta terminar la lista de libros guardada inicialmente.

La lista de libros a abrir debe ejecutarse iniciando la macro del Libro A, y esta se hace con el fin de no abrir dos veces un mmismo libro o un libro de respuesta (Libro1_R).

Despues de echa la lista comienza el ciclo (Abrir libro1 - ejecutar macro - guardar con un nombre nuevo), pero el ciclo estara condicionado a la lista existente.

El orden de ejecucion para abrir los libros es indiferente, lo que necesito es que solo se ejecuten los libros inicialmente existentes en la carpeta, sin que se repita la ejecucion de uno de ellos o se ejecute un libro de respuesta.

Se que lo que pido es bastante y dificil, por eso te agradezco de antemano toda la colaboracion que me puedas prestar.

Saludos y mil gracias.
Daniel
27/01/2006
danielg314, experto respondiendo en Microsoft Excel
Experto
Hola:
Aquí la rutina principal, que arma la lista de libros. Luego donde veas una línea de mensaje 'segunda parte' encontrarás el bucle. Te queda por agregar la rutina de copiado y pegado.

Espero te sirva.
Saludos
Elsa


Option Explicit

Sub ListarArchivosCarpeta()
Dim conta, i, fila As Integer
Dim strArchivos As String
Dim strNombreCarpeta As String
'carpeta donde se hará la búsqueda
strNombreCarpeta = ThisWorkbook.Path
'pasamos al directorio elegido, indicando como tipo de archivo Excel
ChDir strNombreCarpeta
strArchivos = Dir("*.xls")
'armar una lista en la hoja Excel a partir de A15
Cells(15, 1).Select
'recorremos los archivos de la carpeta
Do While strArchivos <> ""
ActiveCell.Value = strArchivos
conta = conta + 1
ActiveCell.Offset(1, 0).Select
'obtiene la siguiente entrada
strArchivos = Dir
Loop

'segunda parte
i = 1
For i = 1 To conta
fila = 14 + i
Cells(fila, 1).Select
Workbooks.Open ThisWorkbook.Path & "\" & ActiveCell.Value

'aquí irá tu rutina de copiado , etc, etc
'por ahora solo muestra un mensaje y cierra el libro

MsgBox "libro abierto"
ActiveWorkbook.Close

Next i
End Sub


http://es.geocities.com/lacibelesdepunilla/manual
05/02/2006
danielg314, usuario preguntando en Microsoft Excel
Usuario
Elsa, era exactamente lo que buscaba, de inmediato adaptare todo el codigo.
Mil Gracias por tu preocupacion y ayuda :) .
Enlaces patrocinados