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() Me.Hide 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() SetupHeadings 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.
Function StartDate() As Date 'Prompt the user for a calendar date. 'Return the date of the corresponding Monday '(preceding if not exact). CalendarForm.Show StartDate = CalendarForm.CalDate 'StartDate not a Monday: go back to previous Monday Do While Weekday(StartDate, vbMonday) <> monday StartDate = StartDate - 1 Loop End Function
Sub AddPara(paratext As String) 'Adds a H1 paragraph with the given paratext, 'followed by a Normal paragraph. ActiveDocument.Paragraphs.Add With ActiveDocument.Paragraphs.Last .Range.text = paratext .Style = wdStyleHeading1 End With ActiveDocument.Paragraphs.Add ActiveDocument.Paragraphs.Last.Style = wdStyleNormal End Sub
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.