2017-02-04 10 views
1

Я получаю слово (.doc) имена файлов в этом формате -
MDouglas-DouglasM-02-01-2017-493058190498601Вставить часть имени файла в Word, VBA

где

(1) " MDouglas-DouglasM- "остается статическим в начале названия

(2)" 02-01-2017 "- это дата, которая меняется каждый день (на следующий день это будет 02-02-2017, и и так далее

(3) наконец, "-493058190498601", что опять же, k eeps меняется с каждым файлом.

Я заинтересован только в дате «02-01-2017», который я хочу, заселенной в документе Word, в двух местах:

(1) в теле документа, вместо машинописных " Месяц dd, yyyy ",

(2), во втором заголовке документа, вместо буквы" Month dd, yyyy ".

Опять же, «Месяц dd, yyyy» вводится только дважды в документе; один в теле и один во втором pg-заголовке. И я хочу оба места заселенных с датой в расширенном формате, то есть:

«1 февраля 2017»

я мог придумать следующий макрос:

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

Однако это заполняет полное имя файла в верхней части документа. Пожалуйста, предложите (в слове VBA).

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^