2017-02-04 85 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