vba - 如何确定 ReceivedTime 之前的工作日?
问题描述
以下代码保存 Outlook 附件并将生成电子邮件的日期添加到名称的末尾。
我正在尝试添加前一个工作日。
Public Sub K_P3(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "W:XXXX\"
Dim dateformat As String
dateformat = Format(itm.ReceivedTime, "yyyy-mm-dd Hmm ")
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & _
Left(objAtt.FileName, InStrRev(objAtt.FileName, ".") - 1) & _
" " & dateformat & _
Mid(objAtt.FileName, InStrRev(objAtt.FileName, "."))
Next
End Sub
解决方案
尝试这个:
dateformat = Format(application.workday(itm.ReceivedTime),-1), "yyyy-mm-dd") & _
Format(itm.ReceivedTime, " Hmm")
编辑:忘记您使用的是 Outlook:
dateformat = Format(Workday(itm.ReceivedTime,1), "yyyy-mm-dd Hmm")
一些代码(我认为)模仿 Excel 的工作日功能:
Sub Tester()
Dim arrHolidays
arrHolidays = Array(#12/25/2019#) 'array of holidays
Debug.Print Workday(#12/26/2019#, -1) '12/25/2019
Debug.Print Workday(#12/26/2019#, -1, arrHolidays) '12/24/2019
End Sub
'Find the workday `days` ago or in the future starting from `dt`.
'Ignores weekends, and optionally also an array of dates passed to `arrHols`
Function Workday(dt As Date, ByVal days, Optional arrHols As Variant = Empty)
Dim rv, i, dy, delta, hol As Boolean
rv = dt
i = 0
delta = IIf(days < 0, -1, 1) 'what direction are we headed?
Do While i <> days
rv = rv + delta
dy = Weekday(rv, vbMonday) 'Monday=1
If dy <> 6 And dy <> 7 Then 'not a weekend?
'Int() below removes any time component from the date
If Not IsEmpty(arrHols) Then hol = InArray(Int(rv), arrHols)
If Not hol Then i = i + delta 'not a holiday?
End If
Loop
Workday = rv
End Function
'Is value `v` in the array `arr` ?
Function InArray(ByVal v, arr) As Boolean
Dim i As Long
If IsEmpty(arr) Then Exit Function
For i = LBound(arr) To UBound(arr)
If arr(i) = v Then
InArray = True
Exit Function
End If
Next i
End Function
推荐阅读
- haskell - 大数整数类型的性能
- python - Pythonic 方法来分隔基本名称和目录路径
- mysql - Laravel Eloquent - 从关系中检索数据
- python - 有没有一种有效的方法来绘制季节图,以便在时间序列上保留顺序?
- bi-publisher - BI Publisher 突发结果返回“无可用数据”
- unity3d - Unity aab 不符合 Google Play 64 位要求
- javascript - 我有一个同时定义和未定义的变量
- android - 如何使 ConstraintLayout 中的 View 填充可用高度?
- unix - Unix在特定文本之后从文件中读取变量
- python - Matplotlib 甜甜圈标签/注释位置