Macro para ejecutarla en varias hojas

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 botón que he colocado en la primera pagina; como este es un proceso repetitivo para mi, quisiera 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 gustaría 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 ejecución de la macro.
2.Guardar una base de datos de los nombres de estos archivos para poder que el programa reconozca los nombres y el orden en que debe abrir cada archivo (para que no habrá un mismo archivo dos veces)
3.Abrir en orden cada uno de los archivos
4.Que se ejecute el código 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, después de mucho pensar decidí por preguntarte ya que pierdo mucho tiempo cortando, pegando y guardando los resultados con otro nombre. Si una persona hiciera esto esporádicamente no seria un problema, pero cuando uno lo tiene que hacer más 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.

1 respuesta

Respuesta
1
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.
Reenvío por aparente error
Hola, te agradezco tu pronta respuesta e interés.
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 ejemplo:
Libro1, Libro2, Libro3, Libro4...,LibroN
La macro contara el numero de elementos que hay en esta lista (N), Así, podre saber cuantas veces deberá ejecutarse el código (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 código)
La macro entrara en un ciclo y comenzara por abrir el Libro1, se ejecutara el código, con los cambios adquiridos por la ejecución del código, se guardara Libro1 con un nuevo nombre: Libro1_R
Ahora la macro deberá seguir con Libro2 y repetir el mismo proceso.
Así sucesivamente 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 mismo libro o un libro de respuesta (Libro1_R).
Después de echa la lista comienza el ciclo (Abrir libro1 - ejecutar macro - guardar con un nombre nuevo), pero el ciclo estará condicionado a la lista existente.
El orden de ejecución 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 ejecución de uno de ellos o se ejecute un libro de respuesta.
Se que lo que pido es bastante y difícil, por eso te agradezco de antemano toda la colaboración que me puedas prestar.
Saludos y mil gracias.
Daniel
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas