Herbers Excel-Forum - das Archiv

wie kann ich eine VBA-Funktion global machen?

Bild

Betrifft: wie kann ich eine VBA-Funktion global machen?
von: Jürgen Kanuft

Geschrieben am: 25.12.2006 16:58:38
Hallo Leute,
ich habe ohne VBA-Kenntnisse unter tätiger Mithilfe hier im Forum einige kleine VBA Funktionen entwickelt.
diese sind aber nur lokal in der Datei verfügbar in der ich sie entwickelt
habe.
eine Verwendung in anderen Excel-Anwendungen ist damit nicht möglich.
die Routinen befinden sich im VBA-Projekt(Dateiname.xls) unter Module in Modul1 bis modul4.
wie kann ich sie für alle meine Excel-Dateien verfügbar machen?
Gruss an alle die dies lesen
Dank an alle die mir antworten
Jürgen
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: mischa richter

Geschrieben am: 25.12.2006 17:13:02
hallo,
ich gehe mal davon aus, dass du die funktionen in allen offenen xl-mappen haben möchtest.
dann musst du diese in die personl.xls einbinden. die personl.xls wird beim xl-start immer mit geöffnet und steht damit zur verfügung.
jetzt stehste vor der frage - wie bekomme ich eine personl.xls !?
ich machs immer so: einen makro aufzeichnen, diesen aber nicht in der akt. mappe, sondern in der personl.xls ablegen (lassen). dann haste diese personl.xls verfügbar. Gibts einen einfacheren Weg - ich weiss nicht!
viel spass.
mischa richter
www.xltreffen2006.de.vu
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Micha
Geschrieben am: 25.12.2006 18:01:29
hallo,
evtl. als Add-In einlesen
Gruss Micha
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Jürgen Kanuft
Geschrieben am: 25.12.2006 18:17:11
Hallo Micha,
wie geht das genau in Einzelschritten?
Gruss
Jürgen
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Micha
Geschrieben am: 25.12.2006 18:46:31
Also,
die Datei mit den Funktionen speichern als *.xla (Microsoft Excel Add-In). Dann in Excel über Extras und Add-Ins reinladen, fertig. Die Funktionen stehen dir dann in jeder neuen Exceldatei unter Funktionen "benutzerdefiniert" zur Verfügung.
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Jürgen Kanuft
Geschrieben am: 25.12.2006 19:03:49
Hallo Micha,
die Funktionen sind Bestandteil einer 13 MB grossen Arbeitsmappe.
wie kann ich nur die Funktione als .xla abspeichern?
Gruss
Jürgen
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Micha
Geschrieben am: 25.12.2006 19:12:54
Also,
Modul, Rechtsklick und Datei exportieren, so alle Module irgendwo hin speichern. Dann neue Exceldatei öffnen und die ganzen Module wieder einlesen, Datei importieren (Rechtsklick auf MS Excel Objekte) , fertig und weiter wie gehabt
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Jürgen Kanuft
Geschrieben am: 25.12.2006 19:34:39
Hallo Micha,
das mit den Dateien exportieren habe ich gemacht.
den Rest musst du mir aber so detailliert beschreiben da ich in dieser Richtung noch überhaupt nichts gemacht habe.
danke im Voraus.
Gruss
Jürgen
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Micha

Geschrieben am: 25.12.2006 20:05:09
Also,
öffne zuerst eine neue Excel-Mappe, wechsle dann in den VBA-Bereich (Alt+F11). Dort findest Du im Projektfenster Deine geöffnete Mappe, worin sich der Ordner "Microsoft Excel Objekte" mit 3 Tabellen und einem Arbeitsblatt befindet. Mit der rechten Maustaste klicke auf den oben beschriebenen Ordner, dort wähle dann "Datei importieren" und suche nach Deinen exportieren Modulen, die Du darüber reinlädst. Sobald Du das getan hast, hast Du automatisch einen Ordner "Module", in welchem dann dieses importiere Modul drin ist. Danach kannst Du 2 Tabellen entfernen, sodass eine übrig bleibt. Jetzt die ganze Excel-Datei als ".xla" (=Microsoft Excel Add-In) abspeichern. Erneut Excel öffnen und über Extras/Add-In über "Durchsuchen" nach Deinem Excel-Add-In suchen. Zum Schluss noch einen Haken reinsetzen, um das Excel-Add-In zu aktivieren. Der Zugriff auf die Funktionen kann jetzt von jeder beliebigen Excel-Mappe erfolgen.
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Jürgen Kanuft

Geschrieben am: 25.12.2006 20:55:47
Hallo Micha,
danke für deine vorbildliche Beschreibung.
ich habe jetzt das neue xla-Objekt mit den Funktionen.
ich habe daraufhin die alten Funktionen in der ursprünglichen .xls-Datei gelöscht.
das hat jetzt aber den unangenehmen Effekt, dass jetzt alle Zellen die sich auf die Funktionen in der ursprünglichen .xls-Datei beziehen, undefiniert sind.
diese alle mit der Hand nachzubearbeiten wäre eine wahnsinns Arbeit, zumal jetzt manche Zellen komplett ohne jeden Bezug sind.
ich habe selbstverständlich noch Datensicherungen.
wie könnte ich die alten Funktionen auf die neue .xla-Datei beziehen sodass wieder alles stimmt?
Gruss
Jürgen
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Micha
Geschrieben am: 25.12.2006 22:44:59
Hm,
da fällt mir momentan nichts ein, vielleicht weiss jemand anderes Rat.
Ansonsten bleibt nur der Weg mit der Hand.
Gruss Micha
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Erich G.

Geschrieben am: 26.12.2006 00:16:45
Hallo Jürgen,
aktiviere die Mappe, in der die Funktionen jetzt fehlen (da steht jetzt wohl in diversen Zellen #NAME?).
Dann rufst du im Menü Extras - Add-Ins... einen Dialog auf, der dir eine Liste verfügbarer Add-Ins zeigt.
Taucht da dein neues XLA auf, brauchst du nur davor einen Haken zu setzen.
Taucht es nicht auf, musst du es vorher mit dem Button "Durchsuchen" ergänzen.
Vermutlich musst du nun noch eine Fehler-Zelle mit F2 und Return bearbeiten (ohne Änderung).
Die Verknüpfung der Mappe zu dem Add-In bleibt erhalten, wenn du die Mappe speicherst.
Beim Öffnen der Mappe wird automatisch im Hintergrund auch das XLA geöffnet.
Rückmeldung wäre nett! - Erich aus Kamp-Lintfort wünscht dir schöne Rest-Feiertage!
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Jürgen Kanuft

Geschrieben am: 26.12.2006 09:13:38
Hallo Erich,
auch dir viele Weihnachtsgrüsse, hoffentlich hattest du eine reichhaltige Bescherung!
Das eigene .xla ist bei mir eingebunden und ist auch markiert.
nur der entscheidende Schritt mit der F2 bzw. Return-Taste führt nicht zu dem gewünschten Resultat.
wenn ich die Funktion in einer anderen Arbeitsmappe benutze funktioniert sie richtig.
ich glaube auch irgendwann einmal bemerkt zu haben das Excel intern die Funktionen nicht nur mit ihrem Namen sondern mit ihrem Pfad zur Anwendung abspeichert.
aber auch wenn ich die Formel ins Clipboard kopiere, dann in einen Texteditor schreibe, ihn von dort aus wieder ins Clipboard schreibe und in der alten Excel-Mappe einfüge bleibt der #NAME-Fehlertext erhalten, was mich eigentlich wundert da Excel jetzt eigentlich die neue Funktion nehmen sollte.
benenne ich die Funktion um und verwende den neuen Namen dann funktioniert alles richtig.
vielleicht fällt dir dazu ja noch was ein.
Gruss
Jürgen
Bild

Betrifft: AW: VBA-Funktion doppelt vorhanden?
von: Erich G.

Geschrieben am: 26.12.2006 10:53:15
Hi Jürgen,
eine mögliche Ursache:
Die Funktion ist zweimal definiert - im XLA und in der betreffenden Mappe.
Dann sollstest du die Funktion in der Mappe (im VBA-Editor) löschen.
Als du die Funktion testhalber umbenannt hast: Wo hast du das getan?
(Dann müsste es beide Funktionen geben - die mit dem alten und die mit dem neuen Namen.)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: VBA-Funktion doppelt vorhanden?
von: Jürgen Kanuft

Geschrieben am: 26.12.2006 12:52:14
Hallo Erich,
1. in der betreffenden Mappe habe ich die Module gelöscht,
deshalb sind sie jetzt ja auch undefiniert.
2. ich habe in VBA im .xla-Modul die Funktion umbenannt indem ich in der Routine dem Namen noch eine Zahl nachgestellt habe, aus xxx wurde xxx2.
wenn ich dann xxx2 in der Formel verwendet habe hat es richtig funktioniert,
d.h. die Funktion wurde im .xla addin gefunden.
2)) ich hatte anfangs die Funktionen statt in eine neue .xla-Datei Datei in ein vorhandenes VBA-Projekt importiert.
3)) danach habe ich in einem Arbeitsblatt in eine Zelle die Formel geschrieben die auch in anderen Zellen steht.
danach habe ich die Module im vorhandenen VBA-Projekt wieder gelöscht und in ein eigenes neues .xla-Pojekt geschrieben das ich derzeit verwende.
wenn ich jetzt auf die Zelle 3)) klicke wird mir der komplette Pfadname von 2)) angezeigt woraus ich geschlossen habe das Excel intern die Funktionsnamen immer mit dem kompletten Pfandnamen abspeichert.
Gruss
Jürgen
Bild

Betrifft: AW: VBA-Funktion doppelt vorhanden?
von: Erich G.

Geschrieben am: 27.12.2006 19:43:33
Hallo Jürgen,
dann war xxx ja zweimal definiert - im XLA und in dem anderen vorhandenen VBA-Projekt.
Schau mal (nicht in VBA, sondern in Excel) in den Dialog
Bearbeiten - Verknüpfungen
Steht in der Liste eine Quellmappe, die da eigentlich nicht hingehört?
Wenn ja, kannst du sie auswählen, auf "Quelle ändern" klicken
und die richtige Mappe (vermutlich deine neue XLA) als Quelle wählen.
Rückmeldung wäre nett! - Erich aus Kamp-Lintfort wünscht euch einen guten Rutsch!
Bild

Betrifft: AW: VBA-Funktion doppelt vorhanden?
von: Jürgen Kanuft
Geschrieben am: 27.12.2006 21:57:09
Hallo Erich,
danke für die Antwort.
in meiner Mappe ist "Bearbeiten - Verknüpfungen" in hellgrauer Schrift dargestellt und damit nicht selektierbar!
Gruss
Jürgen
Bild

Betrifft: AW: VBA-Funktion doppelt vorhanden?
von: Erich G.

Geschrieben am: 27.12.2006 22:55:22
Hallo Jürgen,
wenn du Excel schließt, dann nur die falsche Mappe in einem "frischen" Excel öffnest und dann in den VBA-Editor gehst:
Welche geöffneten Projekte (Mappen) siehst du im Projekt-Explorer?
Suche dann bitte in allen Projekten nach dem Funktionsnamen xxx.
Wo überall wird er gefunden?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: VBA-Funktion doppelt vorhanden?
von: Jürgen Kanuft

Geschrieben am: 28.12.2006 09:55:46
Hallo Erich,
ich habe nicht verstanden was du mit "falsche Mappe" meinst!
ich habe mal Excel leer aufgerufen, das öffnet automatisch meine Grundvorlage mit.
der Prokekt-Explorer zeigt gut ein dutzend Projekte an, die aber fast alle Passwortgeschützt sind.
nur 2 kann ich öffnen:
meine Grundvorlage in der früher die Funktionen versehentlich abgelegt und danach wieder gelöscht wurden, sie enthält jetzt keine Module mehr und lässt sich auch nicht durchsuchen;
meine Funktionssammlung in der ich die Funktionen und Texte finden kann.
doppelte Fundstellen gibt es keine.
Gruss
Jürgen
Bild

Betrifft: AW: VBA-Funktion doppelt vorhanden?
von: Erich G.

Geschrieben am: 28.12.2006 10:52:33
Hallo Jürgen,
mit "falsche Mappe" meine ich die Mappe, in der du in einem Tabellenblatt eine Funktion aufrufst,
aber als Wert nur den Hinweis "#NAME?" bekommst. Darum geht es doch, oder?
Ist das deine inzwischen VBA-freie "Grundvorlage"?
(Warum wird die schon beim Excel-Start geöffnet? Steht sie im Startordner?
Mich wundert sehr das "gut ein Dutzend" Projekte. Brauchst du die immer?
Damit verbrauchst du eine Menge Zeit und Speicherplatz beim Arbeiten mit Excel.
Und: Du weißt nicht, was alles in diesen Projekten definiert ist - könnte ja auch eine Funktion xxx dabei sein...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: VBA-Funktion doppelt vorhanden?
von: Jürgen Kanuft

Geschrieben am: 28.12.2006 14:21:28
Hallo Erich,
# mit "falsche Mappe" meine ich die Mappe, in der du in einem
# Tabellenblatt eine Funktion aufrufst, aber als Wert nur den Hinweis "#NAME?"
# bekommst. Darum geht es doch, oder?
die Mappe ist schon richtig, aber das mit dem Funktionsaufruf klappt noch nicht
so wie ich es erwartet habe ... ;-)
habe es nochmal mit meiner Mappe versucht:
benenne ich die in dieser Mappe definierte Funktion xxx in xxx1 um,
bekomme ich #NAME als Fehlermeldung;
benenne ich danach die Funktion xxx2 im .xla-Projekt mit meinen Funktionen
in xxx um bleibt #NAME als Fehlermeldung, d.h. Excel verknüft den alten
... Namen xxx nicht mit der aktuellen Funktion gleichen Names!
# Ist das deine inzwischen VBA-freie "Grundvorlage"?
die Excel-Mappe "Grundvorlage" habe ich mir früher mal nach einem Tipp angelegt
wie ich meine dauernd geänderten Excel-Einstellungen global für alle alten und neuen Mappen machen kann.
Seitdem öffnet immer zuerst eine Mappe Grundvorlage und danach erst die eigentlich zu bearbeitende Mappe.
Stört mich zwar, ich weiss aber nicht wie ich das wieder abstellen kann und die Einstellungen global halten kann ohne jedesmal die zusätzliche Mappe mit zu öffnen.
# (Warum wird die schon beim Excel-Start geöffnet? Steht sie im Startordner?
weiss ich nicht (siehe Antwort zuvor!)
# Mich wundert sehr das "gut ein Dutzend" Projekte. Brauchst du die immer?
sind fast alle erforderlich, teilweise durch externe Programme dazugekommen,
teileweise unverzichtbare Excel-Erweiterungen wie der Name-Manager.
# Und: Du weißt nicht, was alles in diesen Projekten definiert ist - könnte ja auch eine # Funktion xxx dabei sein...
möglich, ist aber nicht der Fall, habe es gerade mal probiert.
Gruss
Jürgen
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Jürgen Kanuft

Geschrieben am: 30.12.2006 17:42:50
Hallo Micha,
das hatte ich gemacht.
anfangs hat das wahrscheinlich funktioniert, nach ein paar Änderungen funktioniert es jetzt aber nicht mehr.
ich habe zuletzt die Funktionen umbenannt indem ich eine Ziffer an ihren Namen in VBA angefügt und in VBA die Datei wieder abgespeichert habe.
im Addin-Manager ist die .xla-Datei aktiviert.
aber auch wenn ich eine jungfräuliche Mappe öffne und in einer Formel Bezug auf die Funktion nehme bekomme ich #NAME als Fehlermeldung.
was kann man da alles Falsch machen und was muss alles noch Richtig sein damit das mit den externen Funktionen richtig funktioniert?
Gruss
Jürgen
Bild

Betrifft: AW: wie kann ich eine VBA-Funktion global machen?
von: Jürgen Kanuft

Geschrieben am: 25.12.2006 18:15:51
Hallo Micha,
1.) bist du sicher dass das Funktioniert?
in meiner 2. Mappe sind die Module der 1. Mappe auch vorhanden,
meine 4 Funktionen sind aber nur in der 1. Mappe aufrufbar.
2.) in welchem Verzeichnis müsste die personal.xls stehen?
3.) wie bekomme ich die Module von der jetzihen Arbeitsmappe in die personal.xls?
Gruss
Jürgen
Bild

Betrifft: AW: VBA-Funktion undefiniert
von: Erich G.

Geschrieben am: 28.12.2006 19:11:49
Hi Jürgen,
weil wir sonst in der Forumsliste rechts rauszufallen drohen, fange ich mal wieder weiter links an.
Unsere Kommunikation gestaltet sich etwas schwierig, und ich bin bald ein paar Tage weg.
Aber vielleicht schaffen wirs ja noch...
Gut wäre, du würdest mal die Namen der Dateien, um die es hier geht, konkret nennen.
Aktuell weiß ich nicht, welche Mappe du meinst mit
"habe es nochmal mit meiner Mappe versucht:
benenne ich die in dieser Mappe definierte Funktion xxx in xxx1 um,"
In welcher Mappe ist xxx definiert? Ist das VBA-Projekt fehlerlos kompilierbar?
(anders gesagt: Wie heißt deine Funktionssammlung?)
In welcher Mappe wendet du die Funktion als Tabellenfunktion an?
Welche Add-Ins sind aktiv, wenn du das tust?
Rückmeldung wäre nett! - Erich aus Kamp-Lintfort wünscht allen einen guten Rutsch!
Bild

Betrifft: AW: VBA-Funktion undefiniert
von: Jürgen Kanuft

Geschrieben am: 28.12.2006 20:54:49
Hallo Erich,
# Gut wäre, du würdest mal die Namen der Dateien, um die es hier geht, konkret nennen.
# Aktuell weiß ich nicht, welche Mappe du meinst mit
# "habe es nochmal mit meiner Mappe versucht:
# benenne ich die in dieser Mappe definierte Funktion xxx in xxx1 um,"
ich dachte mit den kurzen xxx# Funktionsnamen wäre es für dich übersichtlicher als wenn ich die echten Namen verwende,
und ich dachte die Dateinamen seien wurscht da letztlich nur die VBA-Projekt-Namen
ausschlaggebend sind.
# In welcher Mappe ist FTEXT definiert?
1. ich habe eine Start-Arbeitsmappe, die heisst "Bank.xls";
2. aus der habe ich eine Folgearbeitsmappe namens "Kredit.xls" herausgeschnitten,
die auf Zellen der Arbeitsmappe "Bank.xls" zurück greift (umgekehrt aber nicht!) da ich mehrere Kredite berechnen will die aber alle auf die gemeinsamen Daten in Bank.xls zurück greifen.
3. ich habe eine alte Mappe namens "Grundvorlage.xls" in der ich meine Excel-Einstellungen abspeichere.
4. ich habe eine neue Arbeitsmappe "Funktionen.xla" in der ich meine neuen 4 Funktionen und eventuell hinzukommende Funktionen zusammen verwalten möchte.
im Folgenden nehme ich auf eine der 4 Funktionen Bezug, das Problem besteht aber mit allen 4 Funktionen.
ich hatte zuerst die Funktion FTEXT als Modul in Mappe Bank.xls definiert;
diese war aber aus Mappe Kredit.xls nicht aufrufbar.
ich habe die Funktionen daraufhin zuerst nach Grundvorlage.xls kopiert und in Bank.xls gelöscht(gleiche Funktionsnamen!).
dann habe ich in eine Zelle von Kredit.xls den Aufruf von FTEXT eingegeben, aber einen #NAME-Fehler bekommen.
daraufhin habe eine neue Mappe angelegt die ich danach unter den Namen Funktionen.xla abgespeichert habe.
dorthin habe ich die Module (immer noch mit den gleichen Namen) aus Grundvorlage.xls hin kopiert und in Grundvorlage.xls wieder gelöscht sodass Grundvorlage.xls nun keine Module mehr enthält.
die Datei Funktionen.xla habe ich dann unter Extras/AddIns eingelesen und aktiv gemacht damit meine Funktionen von nun an automatisch in allen Anwendungen zur Verfügung stehen.
aktuelle Folgen dieser Vorgehensweise:
1. wenn ich in einer Zelle von Kredit.xls, in der zuvor noch keine Aufrufe von FTEXT waren, die Formel von FTEXT eintrage erhalte ich das richtige Resultat, d.h. in Kredit.xls wird definitiv für neue FTEXT-Formeln auf die Formel in Funktionen.xla zurückgegriffen.
2. in Mappe Bank.xls wird in den Zellen mit dem Originalaufruf von FTEXT die Fehlermeldung #NAME angezeigt sobald ich sie anklicke,
ansonsten steht in den noch nicht angeklickten Zellen noch der richtige alte Wert aus der Zeit als die Funktion FTEXT noch in Bank.xls enthalten war.
auch wenn ich den Inhalt der Zelle lösche und die Formel neu eintippe ändert sich daran nichts: #NAME !
offenbar stellt Excel in dieser Mappe keinen Bezug zu FTEXT in Funktionen.xla her sondern vermisst offenbar die ursprünglich Bank.xls-eigene Funktion gleichen Namens!
auch verschiedene Versuche mit unterschiedlichen Abspeicherungsreihenfolgen der Dateien hat kein besseres Ergebniss gebracht.
vielleicht könnte ich ja noch irgendwas an den Einstellungen ausprobieren?
noch weitere Antworten:
# Ist das VBA-Projekt fehlerlos kompilierbar?
ja.
# (anders gesagt: Wie heißt deine Funktionssammlung?)
funktionen.xla
# In welcher Mappe wendet du die Funktion als Tabellenfunktion an?
ich weiss nicht was du mit Tabellenfunktion meinst, ich benutze sie nur in einzelnen Zellen.
# Welche Add-Ins sind aktiv, wenn du das tust?
was meinst du mit aktiv?
wenn du möchtest kannst du mir auch deine Telefonnummer mailen und wir können das Problem vor deinem Urlaub telefonisch klären.
egal wie:
vielen Dank für deine bisherigen Bemühungen und viel Spass im Urlaub!
Gruss
Jürgen
Bild

Betrifft: AW: VBA-Funktion undefiniert
von: Jürgen Kanuft
Geschrieben am: 28.12.2006 22:33:54
Hallo Erich,
Nachtrag:
Zellen mit FTEXT-Bezug in Bank.xls ergeben folgende Fehlerüberprüfungs-
Resultate:
ungültiger Name:
Formel enthält Text der nicht interpretiert werden kann.
Gruss
Jürgen
Bild

Betrifft: AW: VBA-Funktion undefiniert
von: Herbert
Geschrieben am: 30.12.2006 00:01:15
Hi,
deine Mappe ist offenbsr korrupt, versuchs mal in einer jungfräulichen Mappe,
da sollte es funktionieren.
mfg Herbert
Bild

Betrifft: AW: VBA-Funktion undefiniert
von: Jürgen Kanuft

Geschrieben am: 30.12.2006 08:56:37
Hallo Herbert,
möglicherweise,
nur nützt mir diese Erkenntniss erst mal nichts.
es könnte auch ein prinzipieller Fehler in E2002 sein.
Mein Problem existiert aber mit der bestehenden Mappe.
Wie kann man eine korrupte Mappe reparieren?
Gruss
Jürgen
 Bild
Excel-Beispiele zum Thema "wie kann ich eine VBA-Funktion global machen?"
Abweichungen sichtbar machen