Crear varios libros excel a partir de hojas de un Archivo VBA

Antes de generar esta pregunta revise en el foro si existían preguntas anteriores que me pudiesen ayudar, pero no encontré :(.

Tengo un libro excel con varias hojas con información (más de 100), que contienen información por cada cliente, todas las pestañas tienen como nombre el Rut del cliente.

Necesito que a través de una macro, pudiese automáticamente transformar todas estas hojas a nuevos archivos manteniendo el nombre de la hoja y el fomato del archivo, adicionalmente poder guardarlos en formato excel en un directorio especial.

2 respuestas

Respuesta
2

Prueba la siguiente macro.

Cambia en la macro "C:\trabajo\" por el nombre de tu directorio especial

Sub CrearLibroPorHoja()
  Dim sh As Worksheet, carpeta As String
  carpeta = "C:\trabajo\"
  For Each sh In Sheets
    sh.Copy
    ActiveWorkbook.SaveAs carpeta & sh.Name & ".xlsx"
    ActiveWorkbook.Close False
  Next
  MsgBox "Fin"
End Sub

¡Eres un maestro!

Funcionó de maravilla, so me gustaría adicionar las siguientes dos variables.

  1. Que copiara desde la hoja "X" a la derecha, que en la macro pueda poner en nombre de la hoja.
  2. Que generará el proceso como en segundo plano, que no vea como los saltos que está generando cada hoja.

Solo eso, reitero mis agradecimientos 

Prueba esto:

Sub CrearLibroPorHoja()
  Dim sh As Worksheet, carpeta As String, i As Long, hoja As String
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  carpeta = "C:\trabajo\"
  hoja = "Nombre hoja"
  For i = 5 To Sheets.Count
    Set sh = Sheets(i)
    sh.Copy
    ActiveSheet.Name = hoja
    ActiveWorkbook.SaveAs carpeta & sh.Name & ".xlsx"
    ActiveWorkbook.Close False
  Next
  Application.ScreenUpdating = True
  MsgBox "Fin"
End Sub

Se está generando..., son varias hojas por eso no termina :).

Cuando me referí a esto.

¿Es posible esconderlo?

Muchas gracias

Iván

No, así funciona excel.

Lo único que puede apagarse es el blink de pantalla con esto:

Application.ScreenUpdating = False

Si es así, Entonces estoy completamente agradecido.

Muchas gracias por dedicarme un poco de tiempo y espero seguir aprendiendo.

Me gusto mucho esta comunidad.

Un abrazo! 

Respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas