【问题标题】:How to Jump to a Bookmark in Word-VBA and insert text?如何在 Word-VBA 中跳转到书签并插入文本?
【发布时间】:2020-10-25 18:20:19
【问题描述】:

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

但是当我从模板创建新文档时,我不断收到未找到书签。我已经经历了很多次,有时书签在那里,有时它在那里但不允许你点击“转到”。

我怎样才能让它工作?我在Document_New() 事件中添加了一小段代码,但一直报告找不到书签

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

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

【问题讨论】:

  • 您可以将代码直接复制到您的答案中吗?

标签: vba ms-word word-2007


【解决方案1】:

这可能是因为在您的代码中使用了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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2020-11-02
    相关资源
    最近更新 更多