Necesitas dividir la información de tu hoja en varios archivos en función de las claves que tienes en una columna.
Para cada grupo de claves DEBES generar un archivo con la información correspondiente.
Te muestro cómo generar todos los archivos con solamente presionar un botón.
Código:
Sub Crear_Archivos()
'Por Dante Amor
'VARIABLES
Dim wb As Workbook
Dim sh As Worksheet
Dim c As Range, celda As Range, col As Range
Dim wPath As String, col_clave As String
Dim lr As Long, lc As Long, fila As Long
Dim ky As Variant
'
'
'DATOS INICIALES
Set sh = ActiveSheet 'Nombre de la hoja con los datos
On Error Resume Next
With Application
Set celda = .InputBox("Selecciona la primera celda de tus encabezados", _
"CURSO DE EXCEL Y MACROS", Range("A1").Address, Type:=8)
If celda Is Nothing Then Exit Sub
Set col = .InputBox("Selecciona la columna con las claves", _
"CURSO DE EXCEL Y MACROS", Range("B:B").Address, Type:=8)
If col Is Nothing Then Exit Sub
End With
On Error GoTo 0
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Selecciona la carpeta destino"
.InitialFileName = ThisWorkbook.Path
If .Show <> -1 Then Exit Sub
wPath = .SelectedItems(1) & "\"
End With
col_clave = Split(col.Address(0, 0), ":")(0) 'Columna clave referencia para crear libros
'AMBIENTE
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'
'VALORES
If sh.AutoFilterMode Then sh.AutoFilterMode = False
fila = celda.Row
lc = sh.Cells(fila, Columns.Count).End(1).Column
lr = sh.Range(col_clave & Rows.Count).End(3).Row
'
'PROCESO
With CreateObject("Scripting.Dictionary")
'almacena en un índice los valores únicos de la columna clave
For Each c In sh.Range(sh.Cells(fila + 1, col_clave), _
sh.Cells(lr, col_clave))
.Item(c.Value) = Empty
Next
For Each ky In .Keys
'filtra los datos por cada clave
sh.Range(celda, sh.Cells(fila, lc)).AutoFilter Columns(col_clave).Column, ky
Set wb = Workbooks.Add(xlWBATWorksheet) 'crea nuevo libro con una hoja
sh.AutoFilter.Range.Copy Range(celda.Address) 'copia los datos filtrados
wb.SaveAs wPath & ky & ".xlsx", xlOpenXMLWorkbook 'guarda el archivo
wb.Close False
Next
sh.ShowAllData
End With
'
'AMBIENTE
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "Archivos generados", vbInformation, "CURSOS DE EXCEL Y MACROS"
End Sub
Instrucciones:
Realiza los siguientes pasos para crear un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir VBA-Macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. Copia el código que está arriba.
5. En el panel del lado derecho pega la macro
6. Ahora para crear un botón, puedes hacer lo siguiente:
7. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
8. Elige una imagen y con el Mouse, dentro de tu hoja, presiona clic y arrastra el Mouse para hacer grande la imagen.
9. Presiona clic derecho dentro de la imagen y selecciona: Asignar macro. Selecciona: Crear_Archivos
10. Presiona Aceptar.
12. Para ejecutarla presiona clic en la imagen.
No hay comentarios.:
Publicar un comentario