0
votes

Comment insérer un code de champ imprimé dans une phrase en utilisant Word VBA?

J'aimerais obtenir la phrase suivante à l'intérieur de mon doc: "Ce document a été imprimé le 01/01/2019 2:10 AM". La date et l'heure doivent être dynamiques. En ce moment, je n'ai que cette partie: xxx

Ça fonctionne, mais il manque la partie de date. Que dois-je faire pour obtenir le champ imprimerdate concaténé dans cette phrase?

J'ai essayé xxx

et ça marche, mais Il écrase tout le pied de page, comment puis-je l'ajouter au texte pour le rendre similaire à mon exemple?


2 commentaires

Je pense que vous recherchez Champs. Ajouter et wdfieldPrintDate à partir du Enumération WDFIELDTYPE .


Hum ... j'ai essayé selection.fields.add gamme: =. Pied de page (webheaderfooterprimary) .Range, type: = wdfieldprinterdate, texte: = "@" "" DD mmm aaa aaa "" ", conserveFormatting: = vrai < / Code> Et cela fonctionne, mais il écrase tout le pied de page, comment puis-je l'annoncer au texte pour le rendre similaire à mon exemple?


3 Réponses :


0
votes

Le code ci-dessous modifiera tous les pieds de page dans un document pour afficher "Le document a été imprimé sur {dd.mm.yyyy}. Il pourrait être modifié pour ne pas remplacer tout le pied de page.

Sub ModifyFooter()
    ' 03 Jan 2019

    Dim Doc As Document
    Dim Txt As String
    Dim Foot As HeaderFooter
    Dim Para As Paragraph
    Dim Rng As Range
    Dim i As WdHeaderFooterIndex

    Set Doc = ActiveDocument
    For i = wdHeaderFooterPrimary To wdHeaderFooterFirstPage
        Set Foot = Doc.Sections(1).Footers(i)
        Txt = "This document was last printed on "
        Set Para = Foot.Range.Paragraphs(1)
        Set Rng = Para.Range
        With Rng
            .Text = Txt
            .Collapse wdCollapseEnd
        End With
        Txt = "\@ ""dd.MM.yyyy"""
        Doc.Fields.Add Rng, wdFieldPrintDate, Text:=Txt, PreserveFormatting:=True
    Next i
End Sub


0 commentaires

1
votes

Pour accéder au pied de page associé à une sélection: xxx pré>

à alors ajoutez em> à cette plage: p>

rng.Fields.Add Range:=rng,  Type:=wdFieldEmpty, _
    Text:="PrintDate \@""DD MMM YYYY"" \* CharFormat", preserveformatting:=False


0 commentaires

0
votes

Essayez:

With ActiveDocument
  .Fields.Add Range:=Selection.Sections.First.Footers(wdHeaderFooterPrimary).Range.Characters.Last, _
    Type:=wdFieldEmpty, Text:="PRINTDATE \@""'This document was last printed on 'DD MMM YYYY""", PreserveFormatting:=False
End With


0 commentaires