如何在Word-VBA中跳转到书签并插入文本?

Pat*_*ick 8 ms-word word-2007 word-vba

我正在尝试使用非常简单的单词宏创建Word文档.宏搜索我放置在文本中的书签,然后在该位置添加一个日期,即未来2周.

但是当我从模板创建一个新文档时,我一直没有找到书签.我已经经历了很多次,有时书签就在那里,有时它在那里,但不允许你点击"转到".

我怎样才能让它发挥作用?我在活动中添加了一小段代码,Document_New()但仍然无法报告书签.

我将文档放在rar文件中,因为我的web服务器无法处理.dotm扩展. 文献

我该如何制作,以便在从此模板生成新文档时,新文档的日期提前2周放在2个粗体部分之间?

Sub Two_Weeks_Ahead()
''# Two_Weeks_Ahead Makro
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With

    Dim dt As Date
    dt = DateAdd("d", 14, DateTime.Now)

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd")
End Sub

Private Sub Document_New()
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With

    Dim dt As Date
    dt = DateAdd("d", 14, DateTime.Now)

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd")
End Sub
Run Code Online (Sandbox Code Playgroud)

Tod*_*ain 5

这可能是因为ActiveDocument在您的代码中使用了。调用宏的文档可能仍然是ActiveDocument,因此它找不到任何书签。这是我如何从启用宏的调用文档/模板中执行此操作,该文档/模板运行良好。

Sub AddTwoWeeks()
    Dim d As Document
    Set d = Documents.Add("C:\Users\Me\Desktop\Title.dotx")

    Dim dt As Date
    dt = DateAdd("d", 14, DateTime.Now)

    Dim b As Bookmark
    Set b = d.Bookmarks("TwoWeeks")
    b.Range.Text = Format(dt, "yyyy-MM-dd")
End Sub
Run Code Online (Sandbox Code Playgroud)