2010-04-27 45 views
6

我想用一个非常简单的单词宏创建一个Word文档。该宏将搜索我放入文本中的书签,然后在该位置添加一个日期为2周的日期。如何跳转到Word-VBA中的书签并插入文本?

但是,当我从模板创建一个新文档时,我总是收到书签找不到。我经历过很多次,有时书签在那里,有时候在那里,但不允许你点击“转到”。

我怎样才能使它工作?我已经为Document_New()事件添加了一小段代码,但该事件不断报告书签未找到

因为我的web服务器无法处理.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 
+0

你能直接将代码复制到你的答案吗? – 2010-04-27 22:46:14

回答

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 
相关问题