This is a macro for Microsoft Word to save documents with incremented revision numbers in order to prevent loss of work and to easily revert changes.
- When saving this will save the document with the original filename.
- Everytime it is saved using this macro it will append the revision number to the filename.
- For Example: Dissertation – Revision 011 – Jan 6 2011.doc
Installation instructions for Microsoft Word 2010:
- Make sure the Developer Tab is enabled:
- Office 2010:
- Click File -> Options
- Click Customize Ribbon on the left.
- In the right column, check the ‘Developer’ check box.
- Click OK.
- Office 2007:
- Click the Office button in the top left.
- Click “Word Options” located in the bottom right of the menu.
- On the left, click Popular.
- In the right column, click “Show Developer tab in the Ribbon”.
- Click OK.
- Click the Developer tab in Word.
- Click Macros.
- In the Macro name field type “SaveMacro” and click the Create button.
- Delete everything from Sub SaveMacro() to End Sub.
- Copy and paste all the text in the box below:Sub SaveMacro()
 Dim WSHShell, RegKey, rkeyWord, Result
 Set WSHShell = CreateObject("WScript.Shell")
 Dim intCount As Integer
 Dim strDate As String
 Dim strPath As String
 Dim strFile As String
 Dim strFileType As WdDocumentType
 Dim strRevisionName As String
 Dim intPos As Integer
 Dim sExt As String
 strDate = Format((Date), "dd mm yyyy")
 sExt = ".doc"
 strFileType = wdFormatDocument
 With ActiveDocument
 On Error GoTo CancelledByUser
 If Len(.Path) = 0 Then
 .Save
 End If
 strPath = .Path
 strFile = .Name
 End With
 intPos = InStr(strFile, " - ")
 If intPos = 0 Then
 intPos = InStrRev(strFile, ".doc")
 End If
 strFile = Left(strFile, intPos - 1)
 Start:
 RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Settings\"
 On Error Resume Next
 rkeyWord = WSHShell.RegRead(RegKey & strFile)
 If rkeyWord = "" Then
 WSHShell.regwrite RegKey & strFile, 0
 GoTo Start:
 End If
 intCount = Val(rkeyWord) + 1
 WSHShell.regwrite RegKey & strFile, intCount
 strRevisionName = strPath & "\" & strFile & " - Revision " & Format(intCount, "00#") & " - " & strDate & sExt
 ActiveDocument.SaveAs strRevisionName
 Exit Sub
 CancelledByUser:
 MsgBox "Cancelled By User", , "Save Cancelled."
 End Sub
 
- Now click on the down arrow from the Quick Access Toolbar, then click More Commands…
- Now under where it says “Choose commands from:” change the drop down box to Macros.
- Click on Normal.NewMacros.SaveMacro then click Add.
- It will now appear in the right column.
- If you want to change the icon, click on the Macro, then click Modify below.
- Once done, click OK.

I get a syntax error at the start date line with Carl Norton’s scripted macro. I am a neophyte with this stuff and don’t know the problem. I can see three MMM for month and thought that by changing that to two MM it would correct the syntax error, but no such luck. I am using MS Office Home and Student 2010 – Word version 14.0.6112.5000 32 bit.
This syntax error dialog box occurs when I click Macros on the Developr tab, select SaveMacro and then Run. However, if I am in Word and prior to saving the doc, I click on the icon for this macro that I created in the QuickAccess Toolbar, I then get the following message: Compile Error: Syntax Error, and the following is highlighted: strDate = Format((Date), “dd MM yyyy”).
Hi Pali,
It seems that the code did not copy correctly into the article. I’ve fixed this as well as making a few changes.
Brilliant – thanks for the Macro code.
With this addition it works for normal Ctrl + S (If somebody lazy or forgetful to click on the ‘SaveMacro’ button)
Sub FileSave()
SaveMacro
End Sub
Thanks Viktor.
I have been looking for something like this for ages. I have run it and made some tweaks on the date format but it runs very well. Many, many thanks.
Many thanks – I’ve used your instructions for years – although each time Office 365 updates it removes the Macro – how do we get around that?