Tengo una hoja de excel con un listado de persona y centro de trabajo

Mi estructura de fichero es nombre y apellidos y nombre del centro. Lo que estoy buscando es que me genere nuevas hojas de excel por centros de trabajo (empleado y centro).

Consigo que me haga la primera hoja, pero no consigo que vuelva a iniciar el blucle y me genere nuevas hojas con el nuevo centro de trabajo

A ver si alguien me puede ayudar

1 Respuesta

Respuesta

¿En la columna A tienes el nombre y en la columna B el centro?

Algo como esto:

Según mi ejemplo quieres crear 3 hojas: dep1, ¿dep2 y dep3?

Puedes comentar ...

Hola, es exactamente eso, pero en lugar de hacerlo en hojas, en libros (el nombre del libro es el Dep).

Consigo que haga la primera selección, es decir me crea el primer fichero (hace la primera pasada), pero no consigo que siga haciendo el segundo, tercero, etc..

Muchas gracias

Prueba la siguiente:

Sub Crea_Libros()
  Dim c As Range, sh As Worksheet, ky As Variant, lr As Long
  Dim l2 As Workbook, sh2 As Worksheet
  '
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  '
  Set sh = Sheets("Lista")
  If sh.AutoFilterMode Then sh.AutoFilterMode = False
  lr = sh.Range("B" & Rows.Count).End(3).Row
  With CreateObject("scripting.dictionary")
    For Each c In sh.Range("B2:B" & lr)
      .Item(c.Value) = Empty
    Next c
    For Each ky In .Keys
      sh.Range("A1:B" & lr).AutoFilter 2, ky
      Set l2 = Workbooks.Add
      Set sh2 = l2.Sheets(1)
      sh.AutoFilter.Range.EntireRow.Copy sh2.Range("A1")
      l2.SaveAs ThisWorkbook.Path & "\" & ky & ".xlsx"
      l2.Close False
    Next ky
  End With
  sh.ShowAllData
End Sub

Tu nivel de excel, está a ños luz del mio, mi código es el siguiente:

Private Sub CommandButton1_Click()
Dim contador As Integer
Dim x As Integer
Dim y As Integer
Dim centro As String
Dim centro2 As String


Dim book1 As Workbook
'Dim book2 As Workbook

'los asignas

Set book1 = Workbooks.Open("C:\Users\jordi\Desktop\Carpeta\base.xlsx")

For y = 2 To 30


centro = Sheet1.Cells(y, 5)
book1.Sheets("General").Cells(y, 1) = Sheet1.Cells(y, 1)
book1.Sheets("General").Cells(y, 2) = Sheet1.Cells(y, 2)
book1.Sheets("General").Cells(y, 3) = Sheet1.Cells(y, 3)
book1.Sheets("General").Cells(y, 4) = Sheet1.Cells(y, 4)
book1.Sheets("General").Cells(y, 5) = Sheet1.Cells(y, 5)
book1.Sheets("General").Cells(y, 6) = Sheet1.Cells(y, 6)

If centro <> Sheet1.Cells(y + 1, 5) Then
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\jordi\Desktop\Carpeta\" & centro & " .xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
book1.Close
Exit For
End If

Next y
End Sub

Codifo1         Número Personal     Sociedad   Porcentaje  Centro 

1                     101                             A                 100              CENTRO1

2                     102                            A                  100              CENTRO2

Con esta información crear dos ficheros de excel

Gracias y disculpa

¿Probaste mi código?

Hola, es exactamente eso, pero en lugar de hacerlo en hojas, en libros

En mis pruebas y con el ejemplo que puse, mi código genera 3 archivos: dep1, dep2 y dep3.

Si no está haciendo lo que necesitas, entonces dime cómo tienes tus datos, pero pon una imagen donde se vean las filas y las columnas de excel; y con todo gusto actualizo mi código.

Pero tendrá que ser con mi código, de otra manera, tendría que revisar tu código, probarlo, revisar dónde tiene fallas, corregirlo, probarlo, etc.

Mil gracias

Este es el origen de datos, y necesito que por cada grupo de posición (el fichero ya viene ordenado por posición) me haga libros.

Tal como yo había pensado hacer era teniendo otra hoja

Ir pegando los valores y hacer guardar como

Gracias

Dime cómo tienes tus datos, pero pon una imagen donde se vean las filas y las columnas de excel

En tus imágenes no veo las filas y las columnas de excel. Puedes poner otras imágenes. No puedo saber en cuáles columnas tienes cuál información.


Probaste mi macro con los datos de prueba que yo puse.

Realiza la prueba y dime si es lo que necesitas.

Pero antes de continuar, haciendo más código, prueba mi macro.


Ahora no entiendo lo que quieres, dices:

Este es el origen de datos, y necesito que por cada grupo de posición... me haga libros.

Pero en tu ejemplo solamente viene una posición "Administración".


Revisa mi ejemplo, en mi ejemplo puse 3 grupos, para que la explicación sea clara.



Nuevamente te pido, prueba mi macro con el ejemplo que yo puse y dime si eso es lo que quieres.

Hola, 

Tu macro funciona, pero hace empleado por empleado, no por centro 

Saludos

Probaste con estos datos:

Debes probar con los datos que yo te estoy proporcionando.


Ahora para adecuar mi macro, debes proporcionar una imagen completa, ya que no puedo ver en cuál columna tienes los datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas