Laden Sie Excel-Add-In mit win32com von Python

Ich habe aus verschiedenen Fragen hier gesehen, dass, wenn eine Instanz von Excel aus Python mit:

xl = win32com.client.gencache.EnsureDispatch('Excel.Application') xl.Visible = True wb = xl.Workbooks.Open('Test.xlsx') 

Dann werden die Standard-Add-Ins nicht geladen. Ich habe versucht, mein Add-In zu laden, indem ich stattdessen laufe:

 xl = win32com.client.gencache.EnsureDispatch('Excel.Application') xl.Visible = True addin = xl.Workbooks.Open('C:/path/addIn.xll') wb = xl.Workbooks.Open('Test.xlsx') 

Allerdings, wenn ich dies tun, eine Instanz von Excel öffnet und ich bekomme eine Sicherheitsmeldung bitten mich zu überprüfen Ich möchte dieses Add-In zu öffnen. Wenn ich auf "Enable dieses Add-In für diese Sitzung nur" Excel sofort schließt und öffnet nicht meine gewünschte xlsx-Datei.

Hat jemand irgendwelche Ideen, wie man das Add-In zum Laufen zwingt und dann erlaubt mir, meine Akte zu öffnen?

Vielen Dank für Ihre Hilfe!

3 Solutions collect form web for “Laden Sie Excel-Add-In mit win32com von Python”

Ich habe es tatsächlich geschafft, dies zu lösen, indem ich etwas von diesem MSDN-Artikel in Bezug auf die gleiche Sache mit VBA zu leihen:

http://support.microsoft.com/default.aspx?scid=KB;en-us;q213489

Das folgende funktioniert jetzt perfekt:

 xl = win32com.client.gencache.EnsureDispatch('Excel.Application') xl.Visible = True xl.RegisterXLL('C:/path/addin.xll') wb = xl.Workbooks.Open('Test.xlsx') 

Ich habe viel besseren Erfolg mit Excel über win32com als irgendwelche der anderen Methoden, aber Sie möchten vielleicht auf pyxll ( https://www.pyxll.com/introduction.html ). Hier sind noch ein paar Dinge:

  • Haben Sie überprüft, dass addin.Installed == True ?
  • Haben Sie versucht AddIns.Add("c:\windows\addins\TSXL\TSXL.xll").Installed = True ?
  • Versuche xl.DisplayAlerts=False vor dem Öffnen der Arbeitsmappen
  • Hast du die vier Schritte in der letzten Antwort von Automation Excel über COM / Python versucht – Standard Addins wird beim Start nicht geladen , ich kopiere sie hier:

    1. Öffnen Sie die XLA / XLL-Datei, die das betreffende Addin darstellt
    2. Set addins (addin_name) .Installed = False
    3. Addins (addin_name) .Add (addin_file_path)
    4. Set addins (addin_name) .Installed = True

Ich hatte das gleiche Problem, konnte aber nicht xl.RegisterXLL('C:/path/addin.xla') aus der akzeptierten Antwort verwenden, da es nur mit .XLL Dateien funktioniert und ich hatte eine .XLA Datei.

Stattdessen fand ich, dass das funktionierte:

 xl = win32com.client.gencache.EnsureDispatch('Excel.Application') # Need to load the addins before opening the workbook addin_path = r'C:\path\addin.xla' xl.Workbooks.Open(addin_path) xl.AddIns.Add(addin_path).Installed = True wb = xl.Workbooks.Open(r"C:\my_workbook.xlsm") 
  • Word & Python - Erstellen Sie Inhaltsverzeichnis
  • Dll lade fehler in python ausführbare von pywin32 gemacht
  • Wie man python win32com verwendet, um als Excel-Datei zu speichern
  • Kann Excel nicht vollständig mit win32com auf Python schließen
  • Python speichern xlBild aus der Zwischenablage
  • Rufen Sie MS Access-Modul-Funktion von Python nach dem Kompilieren mit py2exe fehlschlägt
  • Wie man python wartet, bis ein Excel-Makro / Refresh getan ist
  • TypeError: 'str' -Objekt ist nicht mit win32com-Anbindung an Attachmate aufrufbar
  • Python - Verknüpfung mit Argumenten erstellen
  • Python 2.7 - win32com.client - Verschieben eines Arbeitsblattes von einer Arbeitsmappe in eine andere
  • Wie man eine Tabelle von Excel zu Wort mit pythonCOM kopiert
  • Python ist die beste Programmiersprache der Welt.