PC Review


Reply
Thread Tools Rate Thread

Can Add-in determine if macros enabled in another workbook?

 
 
Anthony Berglas
Guest
Posts: n/a
 
      27th Nov 2008
Ie. The add-in (ThisWorkbook) is enabled (otherwise the exercise is
pointless) but are the macros in the ActiveWorkbook enabled?

(I want to know this to warn the user about the fact that Excel 95
Dialogs do not work if the Active workbook has Macros and they are
disabled (even though those ActoveWorkbook macros are never actually
called). A bug in Excel 2007.)

Anthony
 
Reply With Quote
 
 
 
 
Héctor Miguel
Guest
Posts: n/a
 
      27th Nov 2008
hi, Anthony !

> Ie. The add-in (ThisWorkbook) is enabled (otherwise the exercise is pointless)
> but are the macros in the ActiveWorkbook enabled?
> (I want to know this to warn the user about the fact that Excel 95 Dialogs
> do not work if the Active workbook has Macros and they are disabled
> (even though those ActoveWorkbook macros are never actually called). A bug in Excel 2007.)


one way...
the workbook for which you need to know it's macro-status needs to be the "activeworkbook"...
(tested for xl 97 to 2007)

Function ActiveWorkbookMacroStatus() As Boolean
ActiveWorkbookMacroStatus = _
Application.CommandBars("exit design mode").Visible
End Function

Sub Ask4MacroStatus()
MsgBox "Macro execution for:" & vbCr & _
ActiveWorkbook.Name & vbCr & "are " & _
IIf(ActiveWorkbookMacroStatus, "Dis", "En") & "abled"
End Sub

hth,
hector.


 
Reply With Quote
 
Anthony Berglas
Guest
Posts: n/a
 
      29th Nov 2008
On Nov 27, 4:27*pm, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:
> hi, Anthony !
>
> > Ie. The add-in (ThisWorkbook) is enabled (otherwise the exercise is pointless)
> > but are the macros in the ActiveWorkbook enabled?
> > (I want to know this to warn the user about the fact that Excel 95 Dialogs
> > do not work if the Active workbook has Macros and they are disabled
> > (even though those ActoveWorkbook macros are never actually called). A bug in Excel 2007.)

>
> one way...
> the workbook for which you need to know it's macro-status needs to be the"activeworkbook"...
> (tested for xl 97 to 2007)
>
> Function ActiveWorkbookMacroStatus() As Boolean
> * ActiveWorkbookMacroStatus = _
> * * Application.CommandBars("exit design mode").Visible
> End Function
>


Thanks for that, looks like a classic hack. But I could not make it
work in ANY version of Excel (it only needs to work onXL07 for me).
It is false always, unless I explicitly make the commandbar visible,
in which case it is true always.

I also tried Application.Run (ThisWorkbook.Name & "!
aaDummyMethodToRun"); but this always works even if the ActiveWorkbook
is not runnable.

One hack that should work is to send keystrokes to the dialog and see
if a method is invoked. But that is very ugly and somewhat unstable.

Anthony
 
Reply With Quote
 
Héctor Miguel
Guest
Posts: n/a
 
      29th Nov 2008
hi, Anthony !

> ... I could not make it work in ANY version of Excel (it only needs to work onXL07 for me).
> It is false always, unless I explicitly make the commandbar visible, in which case it is true always.
>
> I also tried Application.Run (ThisWorkbook.Name & "!aaDummyMethodToRun")
> but this always works even if the ActiveWorkbook is not runnable.
>
> One hack that should work is to send keystrokes to the dialog and see if a method is invoked.
> But that is very ugly and somewhat unstable.


- I created a xl-2007 workbook (plain & simple) and set it's property "IsAddIn" to True (hidden window just for test)
- this (new) workbook contains both procedures (the function and the sub "ask4macrostatus")
- I opened another workbook (either 2007 or 97-2003 version) with macros

- *IF* I choose NOT to enable the opening workbook macros...
(note that I can't see the "exit design mode" commandbar but...)
- when I call/run (from the hidden workbook) the sub "ask4macrostatus"...
(for an addin or hidden window workbook) you must...
{alt} + {F8} and TYPE the full-path to the procedure (i.e.) -> book1!module1.ask4macrostatus
- the msg shows... "... Disabled"

- *IF* I choose YES to enable the opening workbook macros... the msg shows... "... Enabled"

- other ways to "call" the funcion (and or a similar procedure like "ask4macrostatus")
(I guess that...) should be structured within *your* AddIn (sub/sub/...)procedures -?-

(as I said...) it worked (for me) from versions xl-97 to xl-2007
hth,
hector.

__ previous __
>> Ie. The add-in (ThisWorkbook) is enabled (otherwise the exercise is pointless)
>> but are the macros in the ActiveWorkbook enabled?
>> (I want to know this to warn the user about the fact that Excel 95 Dialogs
>> do not work if the Active workbook has Macros and they are disabled
>> (even though those ActoveWorkbook macros are never actually called). A bug in Excel 2007.)

>
> one way...
> the workbook for which you need to know it's macro-status needs to be the "activeworkbook"...
> (tested for xl 97 to 2007)
>
> Function ActiveWorkbookMacroStatus() As Boolean
> ActiveWorkbookMacroStatus = _
> Application.CommandBars("exit design mode").Visible
> End Function



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
can't find macros in a macro-enabled workbook Dave F Microsoft Excel Programming 6 20th Aug 2007 04:48 PM
how to track changes in a workbook with macros enabled =?Utf-8?B?SmVyanVpY2U=?= Microsoft Excel Misc 0 11th Oct 2006 06:16 PM
how to track changes in a workbook with macros enabled =?Utf-8?B?SmVyanVpY2U=?= Microsoft Excel Misc 0 11th Oct 2006 06:15 PM
Close Workbook if Macros not enabled Graham Fowler Microsoft Excel Programming 2 23rd Sep 2005 11:06 PM
Open workbook-macros enabled, opening another with macros George J Microsoft Excel Programming 5 17th Sep 2004 02:07 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 07:08 PM.