如何使用Word VBA在句子中插入PRINTDATE域代码?

时间:2019-01-03 04:24:02

标签: vba ms-word

我想在我的文档中输入以下句子:“此文档的最后打印时间为01/01/2019 2:10 AM”。日期和时间必须是动态的。现在我只有这一部分:

Element.Range.Text = "This document was last printed on "

它可以工作,但是缺少日期部分。我该怎么做才能将PRINTDATE字段串联到这句话中?

我尝试了

Selection.Fields.Add Range:=.Footers(wdHeaderFooterPrimary).Range, Type:=wdFieldPrintDate, Text:="\@""DD MMM YYYY""", preserveformatting:=True 

它可以工作,但是它覆盖了所有页脚,如何将其附加到文本上以使其类似于我的示例?

3 个答案:

答案 0 :(得分:1)

要访问与选择关联的页脚:

Dim rng as Word.Range
Set rng = Selection.Sections(1).Footers(wdHeaderFooterPrimary).Range

附加到该范围:

rng.InsertAfter " This document was last printed on " 'don't forget a space at the beginning
rng.Collapse wdCollapseEnd 'so the inserted field comes AFTER
rng.Fields.Add Range:=rng,  Type:=wdFieldPrintDate, _
    Text:="\@""DD MMM YYYY""", preserveformatting:=False

注意:我强烈建议使用PreserveFormatting:=False,因为如果应用了其他格式,则该字段更有可能获取周围文本的格式。将此设置为True将保留该字段中原始字符数的原始应用格式。如果该字段已更新且字符数更改,则某些字符的格式可能与其余字符不同。

实际上,我更喜欢使用以下方法,将所有字段内容都包含在Text参数中,包括CharFormat开关。 CharFormat强制整个字段以使用应用于域代码中第一个字符的字符格式-更加可靠:

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

答案 1 :(得分:0)

下面的代码将更改文档中的所有页脚,以显示“该文档最后一次打印在{dd.mm.yyyy}上。它可能会被修改为不替换所有页脚。

ThisTable.another

答案 2 :(得分:0)

尝试:

k1 <- c(1,2,3)
k2 <- c(2,3,4)
k3 <- c(4,5,6)
k4 <- c(3, 4, 5)
k5 <- c(3,4,5)