在Word VBA中插入部分文件名

时间:2017-02-04 14:17:42

标签: vba ms-word

我收到这种格式的单词(.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中)。

1 个答案:

答案 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