我正在尝试使用非常简单的单词宏创建Word文档。宏搜索我放置在文本中的书签,然后在该位置添加一个日期,将来2周。
但是当我从模板创建一个新文档时,我一直找不到书签。我已经经历了很多次,有时书签就在那里,有时它会在那里,但不允许你点击“转到”。
我怎样才能让它发挥作用?我在Document_New()
事件中添加了一小段代码,但不断报告未找到书签。
我将文档放在rar文件中,因为我的网络服务器无法处理.dotm扩展名。 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
答案 0 :(得分:2)
这可能是因为您的代码中使用了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