Te recomiendo que leas un excelente libro sobre Excel para ello haz click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá.
Código a insertar en módulo, haciendo click en el link del final podrás descargar el archivo ejemplo
Private Sub BuscayCreaCarpeta()
Dim mes1 As String
Dim mes, año As Integer
‘Estabezco si la carpeta existe
año = Year(Date)
mes = Month(Date)
‘Determino el nombre de la subcarpeta que va dentro de la carpeta año, hay que tener en cuenta que los informes se
‘sacan al mes siguiente, en caso de ser diciembre debería tenerse en cuenta que se saca en enero del año que sigue
‘por ende el directorio donde se guardan los datos es el del año anterior que ya está en teoría creado.
‘Se pone como nombre de mes el anterior al mes actual, ya que los informes se sacan el mes siguiente
Select Case mes
Case 1
mes1 = «Dic»
Case 2
mes1 = «Ene»
Case 3
mes1 = «Feb»
Case 4
mes1 = «Mar»
Case 5
mes1 = «Abr»
Case 6
mes1 = «May»
Case 7
mes1 = «Jun»
Case 8
mes1 = «Jul»
Case 9
mes1 = «Ago»
Case 10
mes1 = «Sep»
Case 11
mes1 = «Oct»
Case 12
mes1 = «Nov»
End Select
‘Se establece que si el mes es diciembre el año donde se guarden los archivos es el actual menos 1 osea el anterior
If mes1 = «Dic» Then
año = año – 1
End If
‘Verifica que la carpeta con el nombre del año se encuentre caso contrario la crea
Path = «C:» & año
If Dir(Path, vbDirectory) = «» Then
MkDir Path
End If
‘Verifica que la carpeta con el nombre del mes se encuentre caso contrario la crea
path1 = «C:» & año & «» & mes1
If Dir(path1, vbDirectory) = «» Then
MkDir path1
End If
‘Verifica que la carpeta con el nombre de la sucursal esta dentro mes del informe
path2 = «C:» & año & «» & mes1 & «Consolidado»
If Dir(path2, vbDirectory) = «» Then
MkDir path2
End If
path3 = «C:» & año & «» & mes1 & «CC»
If Dir(path3, vbDirectory) = «» Then
MkDir path3
End If
path4 = «C:» & año & «» & mes1 & «Suc1»
If Dir(path4, vbDirectory) = «» Then
MkDir path4
End If
End Sub
Private Sub guardapdfGXDpto()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
‘Controlo errores
On Error Resume Next
Sheets(«Graf_por_dpto»).Range(«v2»).Select
Dim filagrafico, dire As String
Dim nomfile, nomsuc As String
Dim x As Integer
‘Establece área de impresión
Range(«b11:j63»).Select
ActiveSheet.PageSetup.PrintArea = Selection.Address
filagrafico = 2
‘Hace que se realice el informe consolidado y por cada sucursal
For x = 2 To 4
Sheets(«Graf_por_dpto»).Range(«d15») = Sheets(«Graf_por_dpto»).Cells(x, 25)
‘Recorre la filas donde está el nombre de los dtos
While Sheets(«Graf_por_dpto»).Cells(filagrafico, 22) <> Empty
Sheets(«Graf_por_dpto»).Range(«e16») = Sheets(«Graf_por_dpto»).Cells(filagrafico, 22)
‘corre procedimiento que hace que filtre las otras columnas, es como apretar el boton consultar de la hoja
BuscayCreaCarpeta
‘Verifica que los datos para el filtro estén cargados caso contrario carga por defecto
If Sheets(«Graf_por_dpto»).Range(«d15») = Empty Then
Sheets(«Graf_por_dpto»).Range(«d15») = «Todas»
End If
‘Determina el nombre del archivo y lo guarda
nomsuc = Sheets(«Graf_por_dpto»).Range(«d15»).Value
If nomsuc = «Todas» Then
nomsuc = «consolidado»
End If
‘Dependiendo la sucursal elegida determina el path correspondiente
Select Case nomsuc
Case «consolidado»
dire = path2
Case «CC»
dire = path3
Case «Suc1»
dire = path4
End Select
nomfile = «Gráfico Vtas de » & Sheets(«Graf_por_dpto»).Range(«e16″).Value & » » & nomsuc
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
dire & «» & nomfile & «.pdf», Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
filagrafico = filagrafico + 1
Wend
‘vuelvo fila al inicio para que siga con la proxima selección
filagrafico = 2
Next x
Range(«d15»).Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends