8

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

但是当我从模板创建一个新文档时,我一直找不到书签。我已经经历了很多次,有时书签在那里,有时它在那里,但不允许您单击“转到”。

我怎样才能让它工作?我在事件中添加了一小段代码,Document_New()但一直报告Bookmark not found

由于我的网络服务器无法处理 .dotm 扩展名,因此我将文档保存在 rar 文件中。 文档

我怎样才能使从该模板生成新文档时,新文档的日期提前 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
4

1 回答 1

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
于 2010-06-28T06:53:10.147 回答