Hola a todos.
Después de la versión 2010 de Microsoft Project, no conozco, ni creo que exista una forma directa de imprimir un informe y/o exportación de los días no laborables del calendario
de Ms Project. Así que, con las mismas, y debido a diferentes peticiones de los usuarios, he desarrollado una macro que muestra y exporta las excepciones(no
laborables) y fines de semana a sendos archivos txt.
Simplemente debes crear una macro vacía en Ms Project con VISTA > Macros >
Macros > Ver macros.
Escribes un nombre corto y sin espacios, Festivos por ejemplo, luego pulsas
el botón Crear, y a continuación pegas entre las 2 líneas Sub y End Sub el texto
de la macro del final de este post:
Nota.-
Sub
..
.
pegar aquí todo el texto de la macro literalmente como se muestra más
abajo, desde 'Macro desarrollada... hasta... Exit Sub
..
.
End Sub
Finalmente Cierras la ventana de edición de la macro(X), y ya puedes
ejecutar la macro creada sobre el proyecto activo, con VISTA > Macros >
Ver
macros ... Ejecutar. Se mostrará y guardará en 2 archivos txt de
C:windows/temp los festivos y fines de semana, respectivamente. También puedes
elegir cualquier otro calendario base del proyecto.
Saludos.
------------------------------------------------------------
' Macro desarrollada por Ignacio Martín MVP - Octubre 2015
' Genera 2 archivos txt, uno con los Festivos-Excepciones del proyecto activo y otro con los No laborables de fin de semana (Sábados y Domingos no laborables),
' desde principio a fin del proyecto, del calendario elegido. También es aplicable a Calendarios de tareas, no así de Recursos
Dim desdeFecha, hastaFecha, dia As Date
Dim Calendario, CalendarioProyecto, Festivos, Finesdesemana As String
CalendarioProyecto = ActiveProject.Calendar
Calendario = InputBox("Introduzca el Calendario-base de Festivos a exportar:", , CalendarioProyecto)
desdeFecha = ActiveProject.ProjectStart
hastaFecha = ActiveProject.ProjectFinish
Festivos = "Los siguientes Festivos-Excepciones se han exportado al archivo " & "C:\windows\temp\" & Calendario & " - Excepciones.txt" & vbNewLine & vbNewLine
Finesdesemana = "Los siguientes Fines de semana se han exportado al archivo " & "C:\windows\temp\" & Calendario & " - Fines de semana.txt" & vbNewLine & vbNewLine
For dia = desdeFecha To hastaFecha
On Error GoTo Errores
With ActiveProject.BaseCalendars(Calendario)
If .Period(dia).Working = False Then
If Not .WeekDays(Weekday(dia)).Working Then
Finesdesemana = Finesdesemana & Format(dia, "dd.mm.yyyy") & vbNewLine
'Si existe el archivo se sobreescribe, si no se crea.
Open "C:\windows\temp\" & Calendario & " - Fines de semana.txt" For Output As #1
Write #1, Finesdesemana
Close #1
Else
Festivos = Festivos & Format(dia, "dd.mm.yyyy") & vbNewLine
Open "C:\windows\temp\" & Calendario & " - Excepciones.txt" For Output As #1
Write #1, Festivos
Close #1
End If
End If
End With
Next dia
MsgBox Festivos, vbInformation, "Festivos del Calendario: " & Calendario & " "
MsgBox Finesdesemana, vbInformation, "Fines de Semana del Calendario: " & Calendario & " "
Errores:
Select Case Err
Case 1101:
MsgBox Calendario & ": Nombre de Calendario-base de Proyecto o Tarea inexistente." & vbNewLine & vbNewLine & "Nota.- Solo se exportan Calendarios-base, no de Recursos."
End Select
Exit Sub