Macros assigned to buttons do not work when copied to CD

B

Bill Cockerill

Dear Group,

I have built a workbook with a custom toolbar.

The buttons on the toolbar are assigned to macros in the workbook.

However, when I copy the workbook to a CD and run it from there, it
tries to run the macros from the original workbook, not the CD copy.

It then tells me I can't have two workbooks of the same name open!

How can I assign macros to buttons that work from that workbook, no
matter where it is copied to?

Thanks, Bill
 
J

Jan Karel Pieterse

Hi Bill,
How can I assign macros to buttons that work from that workbook, no
matter where it is copied to?

Excel keeps toolbar and menubar customizations in a file with the
extension .xlb. The exact filename depends on Excel version and
install, but usually is: Excel9.xlb or Excel.xlb or Username8.xlb.
Often this file can be found in your WINDOWS directory.

You can attach a toolbar to a workbook. When this workbook is loaded,
XL checks if the toolbar is on the system. If not, it copies the
toolbar from the workbook to the system.

After creating *or changing* the toolbar, you should attach the toolbar
to your workbook:

- activate the workbook to which you want to attach the toolbar
- Rightclick the toolbar, select 'customize'
- Click 'Attach' (Toolbars Tab)
- If the workbook already contains a toolbar by that name, delete it
first by clicking on it on the righthand side and choosing Delete.
- Select your toolbar (on the left) and press 'copy'
- Save the workbook (optionally: save_as an add-in).

Also, you should include code that deletes the toolbar when your
workbook or add-in is closed, so that when you deliver a new version of
your workbook the new toolbar will be used i.s.o the old one. You can
do that in the Thisworkbook module, using the Workbook_BeforeClose
event:

Private Sub Workbook_BeforeClose(Cancel as Boolean)
On Error Resume Next 'In case Toolbar is absent
Application.CommandBars("YourBarsName").Delete
End Sub

Regards,

Jan Karel Pieterse
Excel MVP
www.jkp-ads.com
 
T

Tom Ogilvy

Put code in the workbook (workbook_open event) that assignes the appropriate
macro to the onaction property of the workbook. If you don't include any
path, it should then add the current path for your workbook or you can use
the Thisworkbook.path to assign it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top