如何用Word VBA将mm/dd/yyyy日期转为dd.mm.yyyy并添加下划线
用Word VBA转换日期格式并添加下划线
刚好碰到过类似的需求,给你整理了一段实用的VBA代码,能完美帮你把mm/dd/yyyy格式的日期转换成dd.mm.yyyy,还自动给转换后的日期加上下划线:
完整VBA代码
Sub ConvertDateFormatAndAddUnderline() Dim findRange As Range ' 这里默认处理整个文档,想只处理选中内容就改成 Set findRange = Selection.Range Set findRange = ActiveDocument.Content ' 配置查找规则:匹配mm/dd/yyyy格式的日期 With findRange.Find .ClearFormatting .Text = "([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})" .MatchWildcards = True .Forward = True .Wrap = wdFindStop End With ' 循环查找并处理每个匹配到的日期 Do While findRange.Find.Execute ' 拆分日期的月、日、年部分 Dim monthPart As String, dayPart As String, yearPart As String monthPart = Mid(findRange.Text, 1, InStr(findRange.Text, "/") - 1) dayPart = Mid(findRange.Text, InStr(findRange.Text, "/") + 1, InStrRev(findRange.Text, "/") - InStr(findRange.Text, "/") - 1) yearPart = Right(findRange.Text, 4) ' 重新拼接成dd.mm.yyyy格式 findRange.Text = dayPart & "." & monthPart & "." & yearPart ' 给日期添加单下划线 findRange.Font.Underline = wdUnderlineSingle ' 移动查找范围,避免重复处理同一个日期 findRange.Collapse wdCollapseEnd Loop End Sub
代码说明
- 查找范围:默认处理整个文档,如果你只想转换选中的日期,把
Set findRange = ActiveDocument.Content改成Set findRange = Selection.Range就行 - 日期匹配:用Word的通配符规则
([0-9]{1,2})/([0-9]{1,2})/([0-9]{4}),能精准匹配1-2位的月、日,以及4位的年,不管是2/12/2018还是02/12/2018都能识别 - 格式转换:拆分原日期的各个部分后,按
日.月.年的顺序重新拼接 - 下划线设置:直接给匹配到的文本范围设置单下划线格式,不用手动调整
注意事项
- 运行代码前建议先保存文档,防止意外情况导致内容丢失
- 如果文档里有其他类似
xx/xx/xxxx格式的非日期文本(比如编号),可能会被误处理,这种情况可以先选中需要转换的日期范围再运行代码
内容的提问来源于stack exchange,提问作者rakesh seebaruth
相关产品推荐
相关产品推荐

