Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Sub in Addin von extern aufrufen
#1
Hallo zusammen,

ich möchte aus Outlook per VBA eine Procedure in einem eigenen Excel-Addin (2003) aufrufen. Das funktioniert auch problemlos, wenn Excel (mit dem Addin) bereits geöffnet ist.

Wenn Excel aber noch nicht geöffnet ist, dann gelingt mir das nicht. Mein bisheriges Vorgehen:
- Prüfen, ob Excel geladen
- wenn ja, dann Procedur im Addin aufrufen (klappt)
- wenn nein, dann neue Instanz von Excel erstellen
- Procedur im Addin aufrufen (klappt nicht)

Merkwürdig finde ich, dass das Addin geladen wird, wenn ich Excel "manuell" starte (leere, neue Arbeitsmappe), das Addin aber nicht geladen wird, wenn ich es über ein VBA-Makro aufrufe, obwohl es offensichtlich als "Installed" erkannt wird:


Code:
Sub Test()
    Dim Xl As Object  ' Excel.Application
    Dim p  As Variant ' Programmausführung
    Dim i  As Byte
   
    On Error Resume Next
   
    Set Xl = GetObject(, "excel.application")
   
    On Error GoTo 0
    If Xl Is Nothing Then Set Xl = New Excel.Application
   
    For i = 1 To AddIns.Count
        ' Addin wird immer als "Installed = True" erkannt, auch bei neuer Instanz
        Debug.Print AddIns(i).Name & " " & AddIns(i).Installed
    Next
   
    ' funktioniert bei bereits vorher geöffnetem Excel,
    ' funktioniert nicht, bei neuer Excel-Instanz, wenn sie mit dieser Sub erzeugt wird:
    p = Xl.Run("MeinExcelTest")
End Sub

Hat jemand eine Idee, woran das liegt? Noch besser: hat jemand eine Lösung?

Danke im Voraus.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#2
Hallo,

jetzt ungetestet, versuche es mal mit: p = Xl.Run("MeinAddInDateiname!MeinExcelTest")

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#3
Danke für deinen Tipp – funktioniert aber leider auch nicht. Offensichtlich ist das Addin zu demZeitpunkt noch gar nicht geladen. Aber selbst wenn ich mit "Sleep" eine Wartezeit vorgebe, wird es nicht geladen.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#4
Hallöchen,

Du knockst Dich mit Deinem OnError anscheinend selber aus Sad
Mit GetObject greifst Du auf ein geöffnetes Excel zu. Ist keins offen, wird ein Fehler erzeugt. Da hilft auch keine Wartezeit.
Du könntest den Fehlerwert benutzen, um bei nicht geöffnetem Excel mit CreateObject eins zu öffnen ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Hallo,

danke für den Hinweis, aber nehme ich das
Code:
On Error Resume Next

raus, dann erzeugt 

Code:
Set Xl = GetObject(, "excel.application")

den Fehler


"Laufzeitfehler '429':
Objektdarstellung durch ActiveX-Komponente nicht möglich."

Scheint mir auch logisch, wenn zum Anfügen an eine laufende Instanz ein Fehler kommt, wenn noch gar keine Excel-Instanz vorhanden ist.

Danach ist es egal, ob ich mit 

Code:
Set Xl = CreateObject("Excel.Application")

oder mit 

Code:
Set Xl = New Excel.Application

eine Excel-Instanz öffne. Mein Makro in dem AddIn wird nie gefunden.

Erst wenn ich eine Excel-Datei vorher geöffnet habe, dann funktioniert der Aufruf (was ja auch logisch ist).

Ich habe mich für die letzte Variante entschieden, also vorher Excel zu öffnen.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#6
Hallo Lucky Joe,

hier hat Max eine Lösung gepostet.

Gruß Uwe
Antworten Top
#7
Hallo Uwe,

... that's it! – Danke! Läuft, wie ich es wollte.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste