Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wie Code/Variablen/Userforms aus AddIn ansprechen?

Wie Code/Variablen/Userforms aus AddIn ansprechen?
18.02.2007 18:49:00
Jens
Hallo liebe Forums-Helfer,
hmmm... vielleicht versteh ich hier grundsätzlich etwas nicht...
Hier meine Frage:
Wie kann ich in einer Arbeitsmappe z.B. eine Userform aus einem AddIn (das geladen ist) aufrufen?
Oder z.B. eine Konstante, oder überhaupt allgemein eine Prozedur aus einem geladenen AddIn...?
Danke für eure Tipps sagt
der Jens

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie Code/Variablen/Userforms aus AddIn ansprechen?
18.02.2007 19:43:21
Nepumuk
Hallo Jens,
Prozeduren aus Addins ist kein Problem, die kannst du mit der Run - Methode (siehe Hilfe) aufrufen. Ein Userform musst du dadurch aufrufen, indem du im Addin eine Prozedur aufrufst, welche das Userform startet. Konstanten könntest du über eine Funktion im Addin in deine Mappe holen.
Wenn du allerdings einen Verweis in der Mappe auf das Addin setzt, dann werden die Prozeduren und Konstanten des Addins in der Mappe bekannt. Nur bei Userforms klappt das so nicht, das muss sich die aufrufende Prozedur im Addin befinden.
Gruß
Nepumuk
AW: Wie Code/Variablen/Userforms aus AddIn ansprec
18.02.2007 20:20:00
Jens
Hallo Nepumuk,
vielen Dank für deine Tipps! Scheint ja gar nicht so kompliziert zu sein, was ich da machen will. Ich denke, in meinem Fall wird es das Beste sein, einen Verweis auf das AddIn zu setzen, um dortige Konstanten und Prozeduren nützen zu können. Userforms in einer eigenen Prozedur aufrufen ist ja auch kein Problem.
Eine Frage noch zum Verweis (bin mir nicht sicher, ob ich das richtig gemacht hab); mach ich das so:
Im VBE, meine Arbeitsmappe auswählen, Menü Extras / Verweise, Durchsuchen, *.xla und mein AddIn auswählen; dann erscheint der Projektname des AddIns in der Liste, und der Verweis ist gesetzt. Richtig!?
Kann man alte / falsche Verweise auch wieder aus der Liste löschen?
Danke und lG sagt
der Jens
Anzeige
AW: Wie Code/Variablen/Userforms aus AddIn ansprec
18.02.2007 21:23:49
Jens
Hallo Nepumuk,
hab auf die von mir geratene Weise versucht, einen Verweis von Mappe zu AddIn zu setzen. Aber leider erkennt Excel in der Mappe trotzdem die Prozeduren und Konstanten des AddIns nicht...
Also irgendwas mach ich falsch... Bin für Hinweise dankbar!
LG sagt
der Jens
Public Functions & Subs in AddIns... / Verweise
19.02.2007 00:18:00
Jens
Hi Nepumuk,
danke für deine Beispieldatei. Mit der hat alles funktioniert. Mit meiner nicht. Hab mir selbst ein Minimalbeispiel kreiert. Da hat alles funktioniert. Bei meiner eigentlichen Datei aber nicht...
Kurz vor dem Verrücktwerden bin ich jetzt selbst auf den Fehler gekommen: hatte im AddIn-Modul, um das es ging, ein Option Private Module gesetzt. Nach Auskommentieren des Selbigen klappt alles wunderbar. ;-)
Aber es wirft natürlich die Frage auf, ob ich mich in Sicherheit wägen kann, wenn ich aus allen AddIn-Modulen das Option Private Module lösche und dann die Prozeduren - falls Modul-übergreifend benötigt oder falls von meiner Arbeitsmappe aufgerufen - als Public erkläre.
D.h. um's auf den Punkt zu bringen: Können AddIn-Prozeduren, die als Public erklärt sind (in einem Modul ohne Option Private Module) von einer anderen Arbeitsmappe (VBE / Arbeitsblatt?) angesprochen werden? Nur von Mappen, die einen Verweis auf das AddIn gesetzt haben?
Hab inzwischen selbst einiges rumprobiert, meine Erfahrung ist jetzt in etwa diese: Public-Functions im AddIn können in der Mappe (die einen Verweis auf das AddIn hat) in einem Arbeitsblatt verwendet werden. Public-Subs werden aber unter Extras / Makro / Makros nicht angezeigt. Kann man irgendwie erreichen, dass AddIn-Code grundsätzlich nur im VBA-Bereich einer Mappe verwendet werden kann, aber nicht vom Benutzer in einem Arbeitsblatt? Der Benutzer soll also keinen direkten Zugriff auf die AddIn-Funktionen haben. Passwortschutz des AddIns oder des VBA-Projekts der Mappe? Schließt das auch Zufallstreffer des Benutzers aus?
Sorry für so viele Fragen. Hoffe, du kannst mir (und anderen Usern) hier Klarheit verschaffen. Hab diese Fragen noch nicht wirklich in einem VBA-Buch oder in diesem/einem anderen Forum gelesen...
Vielen Dank!! sagt
der Jens
Anzeige
Verweis aus AddIn auf anderes AddIn!?
19.02.2007 03:46:00
Jens
Hallo!
Noch eine Frage zum Zusammenspiel Excel und AddIn-Verweise...
Inzwischen hab ich von einer Mappe aus einen Verweis auf ein AddIn, und von dort einen Verweis auf ein zweites AddIn. So weit, so gut.
Aber jetzt meldet sich Excel beim Öffnen einer beliebigen Arbeitsmappe (beide AddIns sind geladen) mit der Meldung: "Diese Arbeitsmappe wird momentan von einer anderen Arbeitsmappe verwendet und kann nicht geschlossen werden."
Dabei will ich doch gar nichts schließen... Die AddIns werden beim Start von Excel doch höchstens geöffnet / geladen... Liegt das vielleicht an der Reihenfolge der AddIns? Und wenn ja, kann man die so abändern, dass das Problem nicht mehr auftritt?
!? Wenn jemand einen Tipp dazu hat, bin ich sehr dankbar!
LG
vom Jens
Anzeige
AW: Verweis aus AddIn auf anderes AddIn!?
19.02.2007 07:30:21
Nepumuk
Hallo Jens,
zu deiner letzten Frage, du musst die Addins aus dem Addins-Manager entfernen.
Du könntest die Prozeduren deines Addins in eine Klasse packen. Die Instanz der Klasse muss Public sein und du benötigst eine Funktion im Addin,welche dir die Klasse an deine Mappe übergibt. Reicht das oder benötigst du ein Beispiel?
Gruß
Nepumuk
AW: Verweis aus AddIn auf anderes AddIn!?
19.02.2007 15:27:00
Jens
Hi Nepumuk,
für ein Beispiel wär ich sehr dankbar! Ist Neuland für mich...
Ich dachte, ich hätte den Umgang mit AddIns so in etwa gelernt, und jetzt muss ich alles wieder auf Klassenmodule umbauen... ;-)
Müssen dann alle Prozeduren des AddIns in ein einziges Klassenmodul? Die AddIns sind bei mir recht groß, und so würde das schnell unübersichtlich werden.
Ist das mit der Fehlermeldung beim Starten von Excel ein häufiges / typisches Problem, oder tritt das nur speziell in meinem Fall auf?
LG und vielen Dank sagt
der Jens
Anzeige
AW: Verweis aus AddIn auf anderes AddIn!?
19.02.2007 15:54:00
Nepumuk
Hallo Jens,
die Meldung tritt nur in diesem speziellen Fall auf. Wei schon geschrieben, du musst die Addins, welche per Verknüpfung geöffnet werden aus dem Addins-Manager entfernen.
Hier mal ein Beispiel mit einer Klasse: https://www.herber.de/bbs/user/40541.zip
Deine Module müssen nicht alle in eine Klasse. Du musst dann aber auf alle Klassen über eine Funktion (für jede Klasse eine) einen Verweis setzen. Du könntest aber auch eine Art Oberklasse anlegen über welche du wiederum Zugriff auf die darin enthaltenen Klassen nehmen könntest. Das ist aber für Anfänger schon ein bisschen schwerer Stoff. Viele "angeblich Fortgeschrittene" haben Schwierigkeiten mit Klassen umzugehen.
Gruß
Nepumuk
Anzeige
AW: Verweis aus AddIn auf anderes AddIn!?
20.02.2007 00:49:39
Jens
Hallo Nepumuk,
erstmal vielen Dank für deine Antwort und deine Geduld.
Ich weiß schon, dass ich in Sachen Excel VBA noch im Anfängerstatus bin... Das ist mein erstes größeres Projekt, und ich lerne eine ganze Menge dabei (auch durch dieses Forum!). Learning by doing - super Lerneffizienz, aber natürlich auch viele Fragen. Ohne dieses Forum würd ich in einigen Fällen nicht weiterkommen!
So, zurück zu meinem Projekt... Ich hab deinen Tipp befolgt und meine beiden AddIns aus dem AddIn-Manager rausgeworfen. Die Verweise von der Mappe auf das eine AddIn und von dort aus auf das zweite, die gibt's aber noch. Und damit funktioniert alles wunderbar!!
Zumindest sieht es derzeit so aus als ob alles so klappen würde wie ich es brauche. Ist das jetzt nur Zufall, oder ist das eh klar, dass das Ganze funktioniert, wenn die Verweise bestehen (aber ohne die AddIns im AddIn-Manager zu haben).
Die von dir vorgeschlagene Vorgangsweise mit dem Klassenmodul ist mir - auch dank deiner Beispieldatei - klar geworden. Brauch ich das aber noch, wo's auch mit den Verweisen allein schon klappt?
Die Lösung mit dem Klassenmodul scheint in der Anwendung auch nicht soo kompliziert zu sein. Nur die Sache mit der Oberklasse, die ist mir nicht ganz klar geworden. Wenn du dazu ein Beispiel zur Hand hättest, wär ich (und sicher auch andere Forums-Leser) dankbar!
Nochmal vielen Dank - es werden sicherlich in Zukunft noch weitere Fragen zu meinem Projekt auftauchen!
der Jens
Anzeige
AW: Verweis aus AddIn auf anderes AddIn!?
20.02.2007 04:51:00
Nepumuk
Hallo Jens,
so wie ich es mir vorgestellt habe, funktioniert es leider bei externen Klassen nicht. Aber vielleicht reicht es dir so:
https://www.herber.de/bbs/user/40551.zip
Gruß
Nepumuk
AW: Verweis aus AddIn auf anderes AddIn!?
20.02.2007 13:02:01
Jens
Hi Nepumuk,
danke für die hochgeladene Datei! Ich glaube, mir ist mehr oder weniger klar geworden, wie das mit den Klassenmodulen klappen kann.
Aber funktioniert denn die andere Lösung nicht? In der Mappe Verweise auf die AddIns setzen, wobei die AddIns nicht im AddIn-Manager geladen sind. Damit hat in meinem Fall der Zugriff auf Prozeduren und Konstante des AddIns problemlos geklappt. (Ausführlichere Beschreibung in meinem letzten Beitrag.)
Bitte dazu eine Antwort von dir: brauche ich die Klassenmodule in diesem Fall überhaupt, oder funktioniert die von mir beschriebene Vorgangsweise generell?
Vielen Dank für eine Antwort dazu!
der Jens
Anzeige
AW: Verweis aus AddIn auf anderes AddIn!?
20.02.2007 13:55:34
Nepumuk
Hallo Jens,
du wolltest Prozeduren so kapseln, dass sie nicht von außen gestartet werden können. Das geht nur so. Option Private Module ist auch nur ein Scheinschutz, denn wenn ich den Namen der Prozedur kenne, kann ich sie starten.
Gruß
Nepumuk
AW: Verweis aus AddIn auf anderes AddIn!?
20.02.2007 16:47:00
Jens
Ah, ok, verstehe! Bis jetzt war mir nicht klar, wofür es den Umweg über die Klassenmodule braucht, wo es doch auch ohne funktionieren würde. Alles klar.
Wie sieht das aus, wenn ich die AddIns später in dll's / xll's (?) verwandeln möchte? Kann dann ein User immer noch (mit oder ohne Option Private Module) die Prozeduren des AddIns starten?
In meinem Fall möchte ich nämlich die AddIns später nicht als Quellcode (bzw. nur mit dem leicht zu knackenden VBA-Projekt-Passwort) weitergeben, sondern "möglichst verschlüsselt" (so gut das halt geht...). Es ist wissenschaftlicher Code enthalten, den ich nicht so einfach weiterverbreiten darf (leider!).
Danke für diese weitere und hoffentlich letzte Auskunft zu diesem Thema! Sorry, wenn's schon nervt, aber zugleich nochmal viiielen Dank für die vielen Tipps!
der Jens
Anzeige
AW: Verweis aus AddIn auf anderes AddIn!?
20.02.2007 16:52:04
Nepumuk
Hallo Jens,
um VBA-Code zu einer DLL zu kompilieren, muss er in Klassen vorliegen.
Gruß
Nepumuk
AW: Verweis aus AddIn auf anderes AddIn!?
20.02.2007 19:40:36
Jens
OK, vielen Dank. Ich werd also doch alles auf Klassen umstellen.
Dir nochmal vielen Dank für deine Antworten auf diesen Beitrag.
Lieben Gruß und danke sagt
der Jens

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige