2017-02-04 1 views
1

나는이 형식으로 단어 (.DOC) 파일 이름을받을 -
MDouglas-DouglasM-02-01-2017-493058190498601삽입 부분은

을하고,

(1) " MDouglas-DouglasM- "는 이름의 시작 부분에 정적으로 남아 있습니다.

(2)"02-01-2017 "은 매일 변경되기 때문에 (다음 날에는 02-02-2017로 변경됩니다) 그래서

(3) 마침내 "-493058190498601", 다시 k 모든 파일과 함께 변경됩니다.

(1) 문서의 본문에서, 입력 된 대신에 "

는 내가 두 장소에서 Word 문서에 채워 원하는 날짜"2017년 2월 1일 "에만 관심 달 dd, yyyy ",

(2), 문서의 두 번째 pg 헤더에"Month dd, yyyy "를 입력하십시오.

"Month dd, yyyy"는 문서에서 두 번만 입력됩니다. 하나는 본문에, 다른 하나는 2pg 헤더에 있습니다. 그리고 확장 된 형식으로 날짜로 채워 두 곳을 원하는, 즉 :

"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 
레인지 필드 스왑에 대한 코드를 할 수있는 날짜를 추출합니다