Public Function GetISOWeek(ByVal vdInput As Date) As String
Dim nWeek As Long
Dim nYear As Long
nYear = Year(vdInput)
nWeek = DatePart("ww", vdInput, vbMonday, vbFirstFourDays)
If nWeek >= 52 Then
If DatePart("ww", vdInput + 7, vbMonday, vbFirstFourDays) = 2 Then
nWeek = 1
nYear = nYear + 1
ElseIf Month(vdInput) = 1 Then
nYear = nYear - 1
End If
ElseIf nWeek = 1 And Month(vdInput) = 12 Then
nYear = nYear + 1
End If
GetISOWeek = nYear & "-W" & Format$(nWeek, "00") & "-" & Weekday(vdInput, vbMonday)
End Function