Как перейти к закладке в Word-VBA и вставить текст?

Я пытаюсь создать документ Word с очень простым макросом word. Макрос ищет закладку, которую я поместил в текст, а затем добавляет дату, 2 недели в будущем, в этом месте.

но когда я создаю новый документ из шаблона я получаю закладку не нашли. Я прошел через это множество раз, и иногда закладка есть, иногда ее там, но не позволяет вам нажать "перейти".

Как я могу заставить его работать? У меня есть добавлен небольшой фрагмент кода в Document_New() событие, но это продолжает сообщать закладка не найдена.

у меня есть документ в rar-файл, поскольку сервер не может справиться .расширениями 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

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