[python-win32] excel xla runautomacros

Hussain Jiwani hjiwani at wscm.net
Wed Apr 25 21:33:37 CEST 2007


Following is a snippet of code that I have been using to figure out if
an addin in installed.

        xlApp = win32com.client.dynamic.Dispatch('Excel.Application')
        xlApp.DisplayAlerts = 0
        xlApp.Interactive = 1
        if xlApp.Application.Addins.Count <= 0:
            print "Terminating: No add_ins are available"
            xlApp.quit
            return 0

        # Addin name should be Analysis ToolPak or Analys32
        lnAddins=0
        for ia in range(1, xlApp.Application.Addins.Count):
##            print xlApp.Application.Addins(ia).Title
##            print
str(string.lower(xlApp.Application.Addins(ia).Title)), "xx"
##            print
string.find(str(string.lower(xlApp.Application.Addins(ia).Title)),
"analysis toolpak")
            if
string.find(str(string.lower(xlApp.Application.Addins(ia).Title)),
"analysis toolpak") >= 0 or
string.find(string.lower(xlApp.Application.Addins(ia).Title),
"analys32") >= 0:
                lnAddins=ia

        print lnAddins
        if lnAddins==0:
            print "Terminating.  Analysis ToolPak or Analy32 addins are
not availabe"
            xlApp.quit
            return

        xlApp.Application.Addins(lnAddins).Installed = 0
        xlApp.Application.Addins(lnAddins).Installed = 1

Hussain


-----Original Message-----
From: python-win32-bounces at python.org
[mailto:python-win32-bounces at python.org] On Behalf Of Tim Roberts
Sent: Wednesday, April 25, 2007 12:02 PM
To: Python-Win32 List
Subject: Re: [python-win32] excel xla runautomacros

mjohnson wrote:
> I am having a problem with an excel add-in which is installed via
> xlApp.Workbooks.Open("C:/Program
> Files/Program/XLOF32.xla").RunAutoMacros(1)
>
> I can then add the add-in and install it via
> xlApp.AddIns.Add ("C:/Program Files/Program/XLOF32.xla",True)
> xlApp.AddIns.Item(Index='Excel Functions').Installed=True
>
> My problem is that the macro may have already been run, which
> generates a dialog warning that it is already open.
>
> The question, is there a way of detecting whether the add-in is
> already open?

Well, xlApp.AddIns is a collection.  You should be able to query the
collection item by item and check to see whether the add-in is present.

I'm leaving the code as "an exercise for the reader", but something like
this should be possible:
    for addin in range( xlApp.AddIns.Count ):
        if xlApp.AddIns.item(addin).Filename???
I don't know exactly which property you'd need to query.

-- 
Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.

_______________________________________________
Python-win32 mailing list
Python-win32 at python.org
http://mail.python.org/mailman/listinfo/python-win32


Disclaimer

This e-mail and any attachments is confidential and intended solely for the use of the individual(s) to whom it is addressed. Any views or opinions presented are solely those of the author and do not necessarily represent those of Waterstone Capital Management, L.P and affiliates. If you are not the intended recipient, be advised that you have received this e-mail in error and that any use, dissemination, printing, forwarding or copying of this email is strictly prohibited. Please contact the sender if you have received this e-mail in error. You should also be aware that e-mails are susceptible to interference and you should not assume that the contents of this e-mail originated from the sender above or that they have been accurately reproduced in their original form. Waterstone Capital Management, L.P. and affiliates accepts no responsibility for information, or errors or omissions in this e-mail or use or misuse thereof. If in doubt, please verify the authenticity with the sender.




More information about the Python-win32 mailing list