2017-02-04 62 views
1

我收到字(.DOC)文件名以这种格式 -
MDouglas-DouglasM-02-01-2017-493058190498601插入部分

其中,

(1)“ “MDouglas-DouglasM-”在名称的开始处保持不变

(2)“02-01-2017”是日期不断变化的日期(因此第二天将是02-02-2017,并且等等

(3)最后,“-493058190498601”,它又是k随着每个文件的改变。

我只在日期“2017年2月1日”,这是我想在两个地方居住在Word文档中感兴趣:

(1)在文档的身体,代替打字的“月dd,yyyy“,

(2),在文档的第二个页眉中,代替键入的”Month dd,yyyy“。

同样,“Month dd,yyyy”仅在文档中键入两次;一个在身体中,另一个在第二个pg头部。我想在扩展格式的日期填充这两个地方,那就是:

“2017年2月1日”

我能想出了下面的宏:

Selection.HomeKey Unit:=wdStory 
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ 
    text:="FILENAME " 
Selection.TypeParagraph 

然而,这只在文档的顶部填充完整的文件名。请建议(以字VBA)。

回答

0

这将提取的日期,其他人可以为范围字段做掉的代码(我有兴趣在如何做到这一点)

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