2013-05-02 58 views
0

我有以下VBA代码以书签格式在代码位置插入日期。它每次打开文件时都插入日期而不删除旧的Boookmark文本,所以我在代码的顶部添加了删除文本,但现在它删除了格式,并且它插入了文本是否有保留格式的方法?Word(2010)更新日​​期并使用宏保持格式化

Sub AutoOpen() 
' 
' AutoOpen Macro 
' 
' 
ActiveDocument.Bookmarks("MyDate").Range.Delete 
ActiveDocument.Bookmarks("MyDate1").Range.Delete 
ActiveDocument.Bookmarks("MyDate2").Range.Delete 
ActiveDocument.Bookmarks("MyDate3").Range.Delete 
ActiveDocument.Bookmarks("MyDate4").Range.Delete 
ActiveDocument.Bookmarks("MyDate5").Range.Delete 
ActiveDocument.Bookmarks("MyDate6").Range.Delete 

     With ActiveDocument.Bookmarks("MyDate").Range 
     .InsertBefore Format(Date + 1, "dddd dd mmmm yyyy") 
     End With 

    With ActiveDocument.Bookmarks("MyDate1").Range 
     .InsertBefore Format(Date + 2, "dddd dd mmmm yyyy") 
    End With 

    With ActiveDocument.Bookmarks("MyDate2").Range 
     .InsertBefore Format(Date + 3, "dddd dd mmmm yyyy") 
    End With 

    With ActiveDocument.Bookmarks("MyDate3").Range 
     .InsertBefore Format(Date + 4, "dddd dd mmmm yyyy") 
    End With 

    With ActiveDocument.Bookmarks("MyDate4").Range 
     .InsertBefore Format(Date + 5, "dddd dd mmmm yyyy") 
    End With 

    With ActiveDocument.Bookmarks("MyDate5").Range 
     .InsertBefore Format(Date + 6, "dddd dd mmmm yyyy") 
    End With 

    With ActiveDocument.Bookmarks("MyDate6").Range 
     .InsertBefore Format(Date + 7, "dddd dd mmmm yyyy") 
    End With 
End Sub 
+0

代码的顶部代码会删除书签,因此您无法在下面运行“With ...”部分。我错过了什么,或者你错过了一部分代码? – 2013-05-02 12:44:24

+0

KazJaw,代码按原样运行。书签保持不变,Withs的输出工作,并按照每个书签所定义的位置代码格式输出日期。以上是我在文档中的完整代码。 – RebelCom 2013-05-03 09:24:10

回答

0

当你说'格式'你是指日期格式,或粗体/斜体等?

在任何情况下,您的代码不会为我运行;当您删除范围时,书签会随之一起移除。对我来说,以下运行,正确格式每个I运行时间日期:

Dim tempRng As Range 

Set tempRng = ActiveDocument.Bookmarks("MyDate").Range 
tempRng.Text = Format(Date + 1, "dddd dd mmmm yyyy") 
ActiveDocument.Bookmarks.Add "MyDate", tempRng 

Set tempRng = ActiveDocument.Bookmarks("MyDate1").Range 
tempRng.Text = Format(Date + 2, "dddd dd mmmm yyyy") 
ActiveDocument.Bookmarks.Add "MyDate1", tempRng 

Set tempRng = ActiveDocument.Bookmarks("MyDate2").Range 
tempRng.Text = Format(Date + 3, "dddd dd mmmm yyyy") 
ActiveDocument.Bookmarks.Add "MyDate2", tempRng 

您可以继续它的书签的休息或扔在整个事件中的循环。