• Tip o' the Week #194 – Windows 8.1 Reading List

    Windows 8.1 is now available free for existing users of Windows 8, and in a break with tradition, will not be sold as an upgrade to existing installed Windows versions – it’ll just be the full version, and that’s it.

    Upgrading from Windows 8.1 Preview isn’t officially supported – though it can be done (you do need to match the language version exactly – if you installed the Preview as English US, you’ll need the English US ISO from the MSDN etc site, to upgrade).

    clip_image002There are plenty new features in Windows 8.1, as well as the much-documented return of the Start button (after all the fuss about the removal of the Start button from Windows 8, and the subsequent rush from application vendors to restore it, there’s already a Start Killer app for Win8.1 which removes the reinstated Start button… you can’t win, sometimes…)

    There are a bunch of new apps with Windows 8.1, and major improvements to existing ones. One new app of some interest is the Reading List: the idea being that if you’re looking at web sites in the IE11 browser (the Modern UI version) or possibly reading content in other apps (like the Store), if you flick the Charms out and choose Share, then you can add the site/content link to you Reading List.

    Start the Reading List app up, and it will show you the list of sites you’ve bookmarked, and also make use of Windows 8.1’s improved side/side view, to show the content shown alongside.

    clip_image004

  • Tip o’ the Week #196 – Change Outlook meeting duration

    clip_image002It’s seemingly an irrefutable law that when you book a meeting for an hour, it takes an hour. Or what might happen is some people are still rocking up at 3 or 4 minutes after the start, and others start packing up 5 minutes before the end because they have another meeting to go to. Others yet will start a whole new discussion (“oh, just one more thing…”) with 2 minutes to go.

    One comedian even made a fortune trying to teach us how to make meetings work. Here’s one video that’s 20 years old – yet still holds entirely true today. It was updated last year, and the original version is almost 40 years old. Clearly we don’t learn.

    Now this week’s tip has been a long time coming – since the very beginning of Tip o’ the Week, approaching 3 years ago on this blog (and a year before that internally at Microsoft), it’s something that has been in the back of mind as a productivity tip. Thanks to discovering a blog post that provided suitable inspiration for the idea, and for the majority of the code, here it finally is. Praise be! Huzzah! Etc.

    Frustratingly, Outlook has never offered the option to set how long a new meeting should clip_image004be, or what time it should start. There are a few workarounds – you can set the timescale the calendar shows (so each line is 60, 30, 15 etc minutes, and if you double click on a section of your calendar to create an appointment, then it is set to that time slice). Try it out by going into Calendar, selecting the View tab, then View Settings. Select Other Settings on the pop up dialog, and change the view from there.

    What we need is a Macro

    Today’s tip will let you set both the default duration and the start time of new appointments – so if you want to make all meetings 20 minutes long, starting 5 minutes past the hour or half hour, then you simply set it up as such when you install the code. Don’t be afraid – there is code involved here, but it’s fairly straightforward.

    Here it is, step by step:

    • Start Outlook. Well, duh – you already have…
    • clip_image005Press ALT-F11 to open the Visual Basic editor
    • Expand out the tree at the top left, then double-click on the ThisOutlookSession line, which opens a code window to the right.
    • Paste the following into the code window on the right:

    Private objMeeting As clsMeeting

    Private Sub Application_Quit()
        Set objMeeting = Nothing
    End Sub

    Private Sub Application_Startup()
         Set objMeeting = New clsMeeting
    End Sub

    Next, right-click on ThisOutlookSession on the left hand pane, and choose Insert then Class Module.

    • Click on the newly-created Class1 and in the Properties section immediately beneath, select (Name) and rename Class1 to clsMeeting.
    • Now double-click on the new clsMeeting, and you’ll see a code window appear on the right – copy and paste the following code into that window:

    Const DEFAULT_LENGTH = 45
    Const START_OFFSET = 5


    Private WithEvents olkIns As Outlook.Inspectors, _
            WithEvents olkApt As Outlook.AppointmentItem


    Private Sub Class_Initialize()
        Set olkIns = Application.Inspectors

    End Sub


    Private Sub Class_Terminate()
        Set olkIns = Nothing
    End Sub


    Private Sub olkApt_PropertyChange(ByVal Name As String)
        If Name = "AllDayEvent" Then
            With olkApt
            If .AllDayEvent = False Then
                .Duration = DEFAULT_LENGTH
                 .Start = DateAdd("n", START_OFFSET, .Start)
            End If
            End With
        End If
    End Sub

    Private Sub olkApt_Unload()
        Set olkApt = Nothing
    End Sub

    Private Sub olkIns_NewInspector(ByVal Inspector As Inspector)
        If Inspector.CurrentItem.Class = olAppointment Then
            Set olkApt = Inspector.CurrentItem
            With olkApt
                If .CreationTime = #1/1/4501# Then
                    .Start = DateAdd("n", START_OFFSET, .Start)
                    .Duration = DEFAULT_LENGTH
                End If
            End With
        End If
    End Sub

    OK, now you have your code imported. To change the defaults for meeting duration or offset time, simply change either or both of the Const values at the top of the code. You’ll need to restart Outlook for these changes to take effect.

    There are a few steps to go through now:clip_image008

    • Click the floppy disk icon on the top left of the toolbar to save your changes, then close the Visual Basic for Applications window down.
    • In Outlook 2013, go into File / Options / Trust Center, then click the Trust Center Settings button.
    • Now, go into Macro Settings and change from the default of “Notifications for digitally signed macros, all other macros disabled” to “Notifications for all macros”

    clip_image009

    clip_image011

    Now close Outlook entirely, and restart it – you’ll get a prompt to Enable Macros – this is unavoidable, sadly, but it will only happen when you first launch Outlook. Assuming you actually want this code to run, choose Enable Macros.

    Now, what happens is whenever you create a new appointment, the Macro you’ve just installed will jump on it and set the start and duration times as appropriate. If you need to change the defaults, simply go back into the VB code as above, edit the values in clsMeeting, save the whole shebang and restart Outlook again. If you don’t want the code to run any more, go back into Trust Center and change the Macro settings back to the previous value.