Link to home
Start Free TrialLog in
Avatar of abitoun
abitounFlag for United States of America

asked on

Autoinstall a Macro

Hi,

I wrote a simple macro but in order to deliver to the end user i wish instead of me going to each computer, to deliver a cd with a file that will install the macro on the end users computer. Is there a way to do this?
ASKER CERTIFIED SOLUTION
Avatar of Rartemass
Rartemass
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of DonQuiyote
DonQuiyote

The idea of using a template is on the right track. However it is not necessary to replace normal.dot. In fact it is not even necessary to use a template if you are using Word 2007 and only wnat users to be able to run the macro manually.

Create a new document and save it as a macro enabled document (.docm). Depending on where the macro is at this time, you may have to copy the code in the VBA editor into a new module, or copy the whole module into a new document.
Add a way for the user to run the macro. Apart from pressing Alt-F8 to bring up a long list of macros, a simple but possibly more elegant way is to write a description and instruction and then add an inline macrobutton field. Press ctl-F9 and then complete the field: {macrobutton yourMacroName A button label}. Right-click on it to collapse the field and then double-click on it to test it.
Or rename/create a macro called autoopen and that will execute automatically. To run it, the user can just open it when needed.
To install your macros you have 3 choices. Place it somewhere in My Documents for manual execution, install it to appear in the New Document dialog, os as a startup template to have it always loaded and available eg if you assigning a shortcut key to it. To automatically install the tempalte, here is a simple solution.
Add the following code to your macro enabled document (.DOCM) that will remain on a CD:

Sub AutoOpen()
' Saves this document as a Word 7 template in the current template path. This must be a a macro enable document (.DOCM). It will simply overwrite the template if openend a second time.
Dim templatePath  As String
Dim templateName As String
    ' palce any other startup processing before the following check
    If ActiveDocument.Type = wdTypeTemplate Then Exit Sub ' this is the template already
    templateName = Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 5) ' remove extension
    templatePath = Options.DefaultFilePath(Path:=wdUserTemplatesPath)
    ' Replace with wdStartupPath, and change message below, if the template should always be loaded automatically
    If MsgBox("Press Ok to install this template", vbOKCancel, templateName) = vbOK Then
        ActiveDocument.SaveAs FileName:=templatePath + "\" + templateName, FileFormat:=wdFormatXMLTemplateMacroEnabled, AddToRecentFiles:=False
        MsgBox "The template '" + templateName + "' has been installed and will be available from the New Document menu, under 'My templates'. This document will now be closed. Please restart Word."
        ActiveDocument.Close
    End If
End Sub

Open in new window