对于某些文档,列出可以用作工作基础的日期会很有帮助。例如,您可能必须创建一个报告,该报告列出从现在到该年末的所有日期,以及该日期右边的人名或项目名称。

当然,起点是获取日期列表。

您可以通过两种方法来生成列表。一种简单的方法是将Excel与Word结合使用。 Excel的自动填充功能使生成日期列表非常容易。在Excel中拥有列表后,就可以将其复制并粘贴到Word文档中,或者可以使用邮件合并将日期合并到文档中(如果该方法适合您的需要)。

如果由于某些原因您不想使用Excel,最好的解决方案是使用宏。下面的宏非常快速地创建了2021年所有日期的列表:

Sub PrintYearDays()

Dim DateToday As Date     Dim T As Integer

'Because the date is going to be changed, save it     DateToday = Date     Date = #12/31/2020#

For T = 1 To 365         Selection.TypeText Text:=Format(Date + T, _           "mmmm dd yyyy")

Selection.TypeParagraph     Next T

'Restore today's date     Date = DateToday End Sub

请注意,该宏通过重置系统日期来起作用。

今天的当前日期存储在DateToday变量中,然后将日期重置为您范围的开始日期。如果您希望宏在其他日期范围内工作,则只需更改开始日期以及For …​ Next循环的结束值即可。

如果您需要创建日期列表,而又从不完全知道范围中的开始日期和结束日期,那么使用另一种宏方法更有意义。以下宏要求您提供开始日期和结束日期:

Sub ListDates()

Dim ListDate as Date     Dim StartDate As Date     Dim EndDate As Date     Dim Repeats As Integer

'Gets user input     StartDate = InputBox("Please enter the starting date.", _       "Start Date", "Start Date")

EndDate = InputBox("Please enter the ending date.", _       "End Date", "End Date")



'Enters the start date in the document     Selection.TypeText Text:=Format(StartDate, _       "dddd, MMMM dd, yyyy")

Selection.TypeText (vbCr & vbLf)



'Determines the number of dates to print     Repeats = DateDiff("d", StartDate, EndDate)



'Loops to print the list of dates     For i = 1 To Repeats         ListDate = DateAdd("d", i, StartDate)

Selection.TypeText Text:=Format(ListDate, _           "dddd, MMMM dd, yyyy")

Selection.TypeParagraph     Next i End Sub

由您的输入设置的StartDate和EndDate变量确定重复For …​ Next循环的次数。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(13155)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。 Word的较旧菜单界面: