我收到这种格式的单词(.doc)文件名 -
MDouglas-DouglasM-02-01-2017-493058190498601
其中,
(1)“MDouglas-DouglasM-”在名称的开头保持静态
(2)“02-01-2017”是日期,每天都在变化(所以第二天它将是02-02-2017,依此类推
(3)最后,“ - 493058190498601”再次随着每个文件不断变化。
我只对日期“02-01-2017”感兴趣,我想在两个地方填写Word文档:
(1)在文件正文中,代替键入的“月dd,yyyy”,
(2),在文件的第2页标题中,代替输入“Month dd,yyyy”。
同样,“月dd,yyyy”只在文档中输入两次;一个在身体,一个在第二个pg标题。我希望这两个地方都以扩展格式填充日期,即:
“2017年2月1日”
我可以拿出以下宏:
Selection.HomeKey Unit:=wdStory
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
text:="FILENAME "
Selection.TypeParagraph
但是,这只会填充文档顶部的完整文件名。请建议(在VBA中)。
答案 0 :(得分:0)
这将提取日期,其他人可以为Range字段交换执行代码(我对这是如何完成的感兴趣)
Option Explicit
Sub Test()
Dim dtExtracted As Date
dtExtracted = ExtractDate("MDouglas-DouglasM-", "MDouglas-DouglasM-02-01-2017-493058190498601")
End Sub
Function ExtractDate(ByVal sPrefix As String, ByVal sFileName As String)
Dim lPrefixLen As Long
lPrefixLen = Len(sPrefix)
If Left$(sFileName, lPrefixLen) = sPrefix Then
Dim sRemainder As String
sRemainder = Mid$(sFileName, lPrefixLen + 1)
Dim vSplit As Variant
vSplit = VBA.Split(sRemainder, "-")
ReDim Preserve vSplit(0 To UBound(vSplit) - 1)
Dim sReJoin As String
sReJoin = VBA.Join(vSplit, "-")
If VBA.IsDate(sReJoin) Then
ExtractDate = CDate(sReJoin)
End If
End If
End Function