Hasta donde yo se no existe ningun control que segun el calendario de la PC te diga cuales son los dias festivos; lo que podes hacer es crear una tabla, que contenga un campo de tipo fecha y en esa tabla metas todas las fechas festivas; por ejemplo: 01/01/2006; 25/12/2006; 01/05/2006; etc...
Y con un SQL haces una comparacion:
Código:
Set mirecordset = Conexion.Execute("SELECT fecha FROM festivos WHERE MONTH(fecha) = MONTH(DATE()) AND DAY(fecha) = DAY(DATE())") ' Ojo: solo nos interesa el mes y el dia, en ningun momento hay que comparar el año
If mirecordset.BOF=False And mirecordset.EOF=False Then
Msgbox "Es Festivo"
End if
Este ejemplo es con ADO y una BD de Access.
Aplicandolo al ejemplo anterior queda asi:
Código:
' Ojo: Agrega la referencia Microsoft ActiveX Data objects 2.6
' Menu Proyecto->Referencias->Seleccionar Microsoft ActiveX Data objects 2.6
' Objetos de ADO
Dim mirecordset As Recordset
Dim conexion As Connection
'
Dim dif, i As Integer
Dim fecha_inicial, fecha_final As String
' Para inicializar el objeto Connexion
Set conexion = New Connection
' La Base de datos tiene que estar en la carpeta del proyecto
conexion.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data source = " & App.Path & "\BD.mdb;Persist Security Info=False;"
conexion.Open
'
fecha_inicial = "01/04/2006"
fecha_final = "02/05/2006"
dif = CDate(fecha_final) - CDate(fecha_inicial)
For i = 1 To dif
If Weekday(CDate(fecha_inicial) + i, vbMonday) = 6 Or Weekday(CDate(fecha_inicial) + i, vbMonday) = 7 Then
dif = dif - 1
Else
' la consulta a la fecha correspondiente
Set mirecordset = conexion.Execute("SELECT fecha FROM festivos WHERE MONTH(fecha) = " & Month(CDate(fecha_inicial) + i) & " AND DAY(fecha) = " & Day(CDate(fecha_inicial) + i))
' Ojo: solo nos interesa el mes y el dia, en ningun momento hay que comparar el año
' si la consulta devolvio registros
If mirecordset.BOF = False And mirecordset.EOF = False Then
' restamos un dia
dif = dif - 1
End If
End If
Next i
MsgBox "Dias habiles = " & dif, vbInformation, "Resultado"
Ojo: Segun este ejemplo:
Nombre de la base de datos: BD.mdb
Nombre de la tabla: Festivos
Nombre del unico campo en la tabla: Fecha
Tipo de datos del campo fecha: Fecha/Hora
Saludos