Posts Tagged 'Word'

Weekly Diary Document

A little while ago, I came across the idea of a PocketMod: a paper organiser which is printed out as a single sheet of A4, and then folded into an 8-page A7 booklet.


There’s a simple utility that converts an 8 x A4 PDF into a 1 x A4 PocketMod sheet (with the correct page orientation for folding). Obviously, the 8 x A4 PDF can be generated from a Word document.

You can design your own PocketMod on the website, but I wanted a simple weekly diary with pages To Do, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday/Sunday, Notes (with the appropriate dates for pages 2-7). So I’ve set up a Word template to generate a series of Heading1s, for a week that you select using a Calendar control. The H1s page break before.

The Calendar form looks like this:


This is just a form with the Calendar control and an OK button (right-click the background of the Toolbox and pick Additional Controls…). The code for the form is simple:

Public Property Get CalDate() As Date
    CalDate = Calendar.Value
End Property

Private Sub OKCommand_Click()
End Sub

Private Sub UserForm_Initialize()
    Calendar.Value = Date
End Sub

In the ThisDocument module, we need to trigger the initialization:

Private Sub Document_New()
End Sub

SetupHeadings is the top-level procedure in general module DiaryDoc. This:

  • gets StartDate, using the date from the Calendar form, and making sure that it’s the Monday of the selected week
  • uses AddPara to create an H1 + Normal paragraph, for each page (pages 2-7 inside a For loop)
  • deletes the first paragraph that was created by default when the document opened.

Here’s StartDate:

Function StartDate() As Date
        'Prompt the user for a calendar date.
        'Return the date of the corresponding Monday
        '(preceding if not exact).

    StartDate = CalendarForm.CalDate

        'StartDate not a Monday: go back to previous Monday
    Do While Weekday(StartDate, vbMonday) <> monday
        StartDate = StartDate - 1

End Function

Here’s AddPara:

Sub AddPara(paratext As String)
        'Adds a H1 paragraph with the given paratext,
        'followed by a Normal paragraph.

    With ActiveDocument.Paragraphs.Last
        .Range.text = paratext
        .Style = wdStyleHeading1
    End With

    ActiveDocument.Paragraphs.Last.Style = wdStyleNormal

End Sub

The full module is available on my website (as is the template).

Although not a diary as such, I’m currently using Evernote: a free online/synchronised notebook application. You can create notes from any web page, email or arbitrary selection, with a single click: neat.

January 2017
« Dec