The following will send a message (insert as appropriate) if the worksheet is opened on a weekday and a message has not already been sent. The code adds the year to column D to record the fact that this year the message has been sent. Note Sunday is weekday1 and Saturday is weekday 7, so you can use this to determine what to do with birthdays that fall on the weekend.


Sub Bdwishes()
Dim i As Long
Dim ws As Worksheet
Dim bSendMessage As Boolean
Dim dBirthday As Date
    Set ws = ThisWorkbook.Sheets("Sheet1")
    With ws
        For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
            bSendMessage = False
            dBirthday = CDate(.Range("C" & i).Value)
            Select Case True
                Case Day(Now()) = Day(dBirthday) And Month(Now()) = Month(dBirthday)
                    'birthday this day
                    bSendMessage = True
            End Select
            If bSendMessage Then
                If Weekday(dBirthday) > 1 And Weekday(dBirthday) < 7 Then
                    'the birthday is a weekday
                    If .Range("D" & i).Value < Year(Now) Then
                        'send birthday message
                        MsgBox "send message"
                        'update year message sent
                        .Range("D" & i).Value = Year(Now)
                    End If
                End If
            End If
        Next i
    End With
End Sub