Thursday, 12 September 2013

Create auto backup for word documents using macro.

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


Sub FileSave()
SaveMacro
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.