Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 196
Default Personal.xls Macros

Over the past year or so, I have built several macro
libraries including two that Excel applications use. I
have 50 or so spreadsheets that use one or more macros
from these libraries. Presently, the master copies of the
Excel-relevant modules are stored in Personal.xls and are
declared "public". When I try to call/refer to the macros
in Personal.xls from another open spreadsheet, I get an
error indicating that the referenced subroutine/function
is not defined. I have tried adding the name of
the "owning" spreadsheet, i.e., Personal.xls to the call
(as is shown in the Macro List tool), but that
generates "compiler" errors. The only way to make it work
is to use the Application.Run command. But you can not
pass arguements using that approach.
So, I copy entire modules of specific macros into the
application as I am building it. This works but it is
cumbersome and requires nontrivial bookkeeping to ensure
that an application is running the most recent library. Is
there a simplier way to manage this stuff. For example, is
there a way to have the application simply "fetch" or
refer to the macro from Personal.xls at runtime?
ANy help would be appreciated.
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default Personal.xls Macros



"Mark" wrote in message
...
The only way to make it work
is to use the Application.Run command. But you can not
pass arguements using that approach.


Application.Run "MYCUSTOM.XLM!My_Func_Sum", 1, 5


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 172
Default Personal.xls Macros

Here are some methods for calling macros.

Syntax 1 and Syntax 2 assume that the macros are either in the same
WorkBook or that there is a Reference to the WorkBook containing the
macros.

To set a reference to another WorkBook : If the WorkBook containing
the macro to run is not open, open the WorkBook. Alt-F11 to access
VBE. Ctrl-R to activate Project Explorer. Select the project of the
macro that does the calling. Tools References. Check the name of the
project that contains the called macros.

Syntax 1

Call MacroName ' No parameters
Call MacroName (param1, param2) ' Parameters

Syntax 2

MacroName ' No parameters
MacroName param1, param2 ' Parameters

Syntax 3 assumes that the WorkBook contaning the called macros is
open, but that there are no References to that WorkBook.

Application.Run "'FileName.xls'!MacroName"
' No parameters

Application.Run "'FileName.xls'!MacroName", param1, param2
' Parameters

Syntax 4 assumes that the WorkBook contaning the called macros is not
open.

Application.Run "'" & "PathName" & "FileName.xls" & "'!MacroName"
' No parameters

Application.Run "'" & "PathName" & "FileName.xls" & "'!MacroName",
param1, param2
' Parameters

HTH
Paul
--------------------------------------------------------------------------------------------------------------
Be advised to back up your WorkBook before attempting to make changes.
--------------------------------------------------------------------------------------------------------------

Over the past year or so, I have built several macro
libraries including two that Excel applications use. I
have 50 or so spreadsheets that use one or more macros
from these libraries. Presently, the master copies of the
Excel-relevant modules are stored in Personal.xls and are
declared "public". When I try to call/refer to the macros
in Personal.xls from another open spreadsheet, I get an
error indicating that the referenced subroutine/function
is not defined. I have tried adding the name of
the "owning" spreadsheet, i.e., Personal.xls to the call
(as is shown in the Macro List tool), but that
generates "compiler" errors. The only way to make it work
is to use the Application.Run command. But you can not
pass arguements using that approach.
So, I copy entire modules of specific macros into the
application as I am building it. This works but it is
cumbersome and requires nontrivial bookkeeping to ensure
that an application is running the most recent library. Is
there a simplier way to manage this stuff. For example, is
there a way to have the application simply "fetch" or
refer to the macro from Personal.xls at runtime?
ANy help would be appreciated.


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 196
Default Personal.xls Macros

Your suggestion to reference the Personal.xls file (VBA
editor/Tools/Reference) works exactly as I want. The only
thing I had to do was change the name of VBAProject
associated with Personal.xls from "VBAProject" which is
ambiguous to something that is not. And that is a one
time change. Thanks a lot
-----Original Message-----
Here are some methods for calling macros.

Syntax 1 and Syntax 2 assume that the macros are either

in the same
WorkBook or that there is a Reference to the WorkBook

containing the
macros.

To set a reference to another WorkBook : If the WorkBook

containing
the macro to run is not open, open the WorkBook. Alt-F11

to access
VBE. Ctrl-R to activate Project Explorer. Select the

project of the
macro that does the calling. Tools References. Check

the name of the
project that contains the called macros.

Syntax 1

Call MacroName ' No parameters
Call MacroName (param1, param2) ' Parameters

Syntax 2

MacroName ' No parameters
MacroName param1, param2 ' Parameters

Syntax 3 assumes that the WorkBook contaning the called

macros is
open, but that there are no References to that WorkBook.

Application.Run "'FileName.xls'!MacroName"


' No parameters

Application.Run "'FileName.xls'!MacroName", param1, param2


' Parameters

Syntax 4 assumes that the WorkBook contaning the called

macros is not
open.

Application.Run "'" & "PathName" & "FileName.xls" & "'!

MacroName"
' No parameters

Application.Run "'" & "PathName" & "FileName.xls" & "'!

MacroName",
param1, param2
' Parameters

HTH
Paul
----------------------------------------------------------

----------------------------------------------------
Be advised to back up your WorkBook before attempting to

make changes.
----------------------------------------------------------

----------------------------------------------------

Over the past year or so, I have built several macro
libraries including two that Excel applications use. I
have 50 or so spreadsheets that use one or more macros
from these libraries. Presently, the master copies of

the
Excel-relevant modules are stored in Personal.xls and

are
declared "public". When I try to call/refer to the

macros
in Personal.xls from another open spreadsheet, I get an
error indicating that the referenced subroutine/function
is not defined. I have tried adding the name of
the "owning" spreadsheet, i.e., Personal.xls to the call
(as is shown in the Macro List tool), but that
generates "compiler" errors. The only way to make it

work
is to use the Application.Run command. But you can not
pass arguements using that approach.
So, I copy entire modules of specific macros into the
application as I am building it. This works but it is
cumbersome and requires nontrivial bookkeeping to ensure
that an application is running the most recent library.

Is
there a simplier way to manage this stuff. For example,

is
there a way to have the application simply "fetch" or
refer to the macro from Personal.xls at runtime?
ANy help would be appreciated.


.

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Macros in Personal.xls Not Accessible [email protected] Excel Discussion (Misc queries) 8 September 7th 07 10:56 PM
macros in personal.xls file Steve E Excel Worksheet Functions 0 August 20th 05 10:05 PM
Export Personal Macros Lippy Excel Programming 1 November 10th 03 08:14 PM


All times are GMT +1. The time now is 06:17 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"