Uso de expresión para calular días laborables (ex. Festivos y fines de semana)

Quisiera calcular los días laborables excluyendo fines de semana y festivos.

Siguiendo las instrucciones que he encontrado aquí, he creado la siguiente expresión en Access, considerando dos fechas, Fecha Entrada y Fecha salida. Y la tabla Festivos, donde está la columna Fest con las fechas a excluir.

Option Compare Database
Function DiferenciaFechas()

Dim db As Database

Dim rs As Recordset

Dim vFecha As Date

Dim var As Integer

Set db = CurrentDb Set rs = db.OpenRecordset("Select Fechaentrada, Fechasalida, Días from Tabla1 where Días=0 or Días is null")

Do While Not rs.EOF

var = 0

vFecha = rs!FechaEntrada

Do While vFecha < rs!FechaSalida

If Weekday(vFecha, 0) <> 6 And Weekday(vFecha, 0) <> 7 Then

If IsNull(DLookup("[Fes]", "[Fest]", "[Festivos]=cDate('" & vFecha & "')")) = True Then

var = var + 1

End If

End If

vFecha = vFecha + 1

Loop

rs.Edit

rs!DÍAS = var

rs.Update

rs.MoveNext

Loop

End Function

Seguidamente he creado una macro: ejecutar código y nombre en función, he buscado Diferenciafechas, que por cierto aparece como "Diferenciafechas( "

Al darle a ejecutar me dice: sintaxis no válida. Por favor, ¿podrían revisar si hay algún error?

1 respuesta

Respuesta

Primero que todo te comento que esta no es una función eficiente para realizar cálculos con días hábiles, soy el autor de calendario perpetuo para 21 países en donde utilizo una librería para manipular este tipo de cálculos, esta librería inclusive se puede llamar desde Excel, Word y visual basic. No requiere de tablas de festivos, ya están incluidos en el código de acuerdo con el país. Busca en la Web "Cálculo de días hábiles Eduardo Pérez Fernández".

Para poder llamar una función desde cualquier módulo, macro o formulario ésta se debe declarar como Pública, este caso tu función debe quedar así:

Public Function DiferenciaFechas()

E]

Muchas gracias por su pronta respuesta.

Debido a que no dispongo de conocimientos VBA copié la expresión de otro experto de nuestra red de todoexpertos. "Mea culpa" el olvido de Public... que si está en la expresión, fue un error al copiar.

En todo caso, he encontrado algún otro error en la expresión al "traducir" la expresión a los datos de mi DB. ¿Hay alguna fórmula más eficiente? Mas tarde podría mirar su link al calendario perpetuo pero no se si sabré aplicarlo a mi sencilla DB con mis limitados conocimientos Access.

En caso de que esté intentando hacer algo muy complejo que requiera de más conocimientos no quisiera hacerle perder el tiempo. Cerraría la consulta y puntuaría.

A la espera de sus comentarios.

Gracias.

Buenas tardes,

los ficheros de las librerías han sido eliminados o no se encuentran. Tampoco he podido solucionarlo por ahí,

gracias

Si no tienes conocimiento de VB se te puede complicar un poco, no obstante, la librería que elabore no es difícil de utilizar en las aplicaciones. Lamentablemente la librería estaba en MegaUpload pero tu sabes que el FBI bloqueó esta dirección por piratería. Enviame tu email y con gusto te envío un demo en Access y Excel con ejemplo de uso de la librería.

Me gustaría saber de que país haces la consulta para mirar si la función contempla tu país.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas