Office: Prozeduren über eine globale Vorlage ausführen

Helfe beim Thema Prozeduren über eine globale Vorlage ausführen in Microsoft Word Hilfe um das Problem gemeinsam zu lösen; Hallo! Ich möchte gerne verschiedene Prozeduren in einer zentralen (globalen) Vorlage erstellen und auf diese Prozeduren bzw Funktionen mit jedem... Dieses Thema im Forum "Microsoft Word Hilfe" wurde erstellt von Al3x05, 17. August 2024.

  1. Al3x05 User

    Prozeduren über eine globale Vorlage ausführen


    Hallo!

    Ich möchte gerne verschiedene Prozeduren in einer zentralen (globalen) Vorlage erstellen und auf diese Prozeduren bzw Funktionen mit jedem neuen Dokument insbesondere neuen Dokumenten, die auf einer Vorlage basieren, verwenden.

    Ich habe dazu eine globale Dokumentenvorlage erstellt (Endung: .dotm). Die globale Vorlage befindet sich im WORDSTART Ordner.

    Mit ALT + F8 kann ich ohne Probleme auf die Prozeduren und Funktionen zugreifen und diese ausführen bei:
    • Normalen Dokumenten
    • Dokumenten, die auf einer Vorlage basieren (die geöffnet wurden mit einem Doppelklick auf die Vorlage)
    • Vorlagen Dokumenten (rechte Maustaste: Öffnen)

    Über ALT + F8 werden die Prozeduren ohne das dazugehörige Modul (der Name des Moduls ist „Subs“) angezeigt.

    Wenn ich nun eine Vorlage mit einem Doppelklick starte, öffnet sich (und das ist so gewollt) eine UserForm mit der ich gewisse Dinge auswählen kann. Diese UserForm soll nun basierend auf gewissen Eingaben die Prozeduren bzw. Funktionen in der globalen Vorlage starten.
    Leider bekomme ich da immer den Fehler: Fehler beim Kompilieren: Sub oder Funktion nicht definiert.

    Sobald ich die Fehlermeldung mit Debuggen abgebrochen habe, kann ich zum Dokument1 (das auf der Vorlage basiert) wechseln. Auch dort lässt ich mit ALT + F8 die Prozedur ausführen.

    Alle Prozeduren bzw Funktionen sind Public.

    Wenn ich nun einen Verweis auf die globale Vorlage setze, bekomme ich die Fehlermeldung: Kompilierungsfehler in ausgeblendetem Modul: Subs Dieser Fehler tritt häufig auf, wenn Code nicht mit der Version, Plattform oder Architektur dieser Anwendung kompatibel ist. Klicken Sie auf 'Hilfe", um Informationen dazu zu erhalten, wie Sie diesen Fehler beheben können.
    Diese Fehlermeldung bekomme ich auch, wenn ich die globale Vorlage aus dem WORDSTART Ordner in einen anderen Ordner verschiebe.

    Hat jemand eine Idee, woran das liegen könnte?
     
  2. G.O.Tuhls
    G.O.Tuhls Erfahrener User
    Deine Ausführungen sind mir tlw. etwas unverständlich.
    Alle Word-Dokumente beruhen auf Dokumentvorlagen, mindestens auf Normal.dotm.
    Um Prozeduren für alle Word-Instanzen zur Verfügung zu stellen, müssen diese in der Normal.dotm gespeichert sein oder in einer .dotm als AddIn im Ordner C:\Users\[username]\AppData\Roaming\Startup gespeichert sein. Meinst Du den mit "WORDSTART"? Dieser Ordner muss zudem als "Vertrauenswürdiger Speicherort" deklariert sein.
    "Sub oder Funktion nicht definiert" kommt, wenn die .dotm mit dem aufgerufenen Makro (noch) nicht geladen ist. Das sollte eigentlich mit einer in Startup gespeicherten Datei noch vor dem Aufruf des Userform der aktuellen Datei geschehen sein.
    "Wenn ich nun einen Verweis auf die globale Vorlage setze" Was für einen Verweis setzt Du da?

    Gruß
    Burkhard
     
    G.O.Tuhls, 18. August 2024
    #2
  3. Al3x05 User
    Lieber Burkhard!

    Danke für deine Antwort!

    Siehe meine Antworten in blau.

    Alle Word-Dokumente beruhen auf Dokumentvorlagen, mindestens auf Normal.dotm.
    Das ist natürlich richtig. Mit normalem Dokument meine ich ein auf der Normal.dotm basierendes Dokument.

    Um Prozeduren für alle Word-Instanzen zur Verfügung zu stellen, müssen diese in der Normal.dotm gespeichert sein oder in einer .dotm als AddIn im Ordner C:\Users\[username]\AppData\Roaming\Startup gespeichert sein. Meinst Du den mit "WORDSTART"? Dieser Ordner muss zudem als "Vertrauenswürdiger Speicherort" deklariert sein.
    Mit WORDSTART meine ich den Startup Ordner (Datei/Optionen/Erweitert/Allgemein-Dateispeicherorte ist das der AutoStart Ordner.

    "Sub oder Funktion nicht definiert" kommt, wenn die .dotm mit dem aufgerufenen Makro (noch) nicht geladen ist. Das sollte eigentlich mit einer in Startup gespeicherten Datei noch vor dem Aufruf des Userform der aktuellen Datei geschehen sein.
    Das sehe ich auch so. Der Zugriff auf die Makros (über ALT + F8) funktioniert ja, nur nicht über den Code in der Userform.

    "Wenn ich nun einen Verweis auf die globale Vorlage setze" Was für einen Verweis setzt Du da?
    Das ist der erste Tipp in der Hilfe gewesen. Ich öffne die Vorlage aus der heraus ich das Dokument generieren will (mit rechte Maustaste - Öffnen). Dann mit Alt + F11 in die VBA Oberfläche. Dann Extras/Verweise hier erscheint die Vorlage auch einfach zum anhaken. Selbst wenn ich die Vorlage aus dem Startup Ordner in einen anderen Ordner verschiebe und dann einen Verweis auf das nun woanders gespeicherte Dokument setzt bekomme ich den Kompilierungsfehler.

    Liebe Grüße
    Alex
     
  4. Gerhard H Erfahrener User

    Prozeduren über eine globale Vorlage ausführen

    Hallo Alex,

    für mich ist der springende Punkt das da:
    "Diese UserForm soll nun basierend auf gewissen Eingaben die Prozeduren bzw. Funktionen in der globalen Vorlage starten."
    Wie lauten die "gewissen Eingaben"?
    Wie lautet der Code, um daraus die Makros aus der Dokumentvorlage im Autostart zu starten?


    Wenn ich mir eine Combobox bastele, die die Makronamen enthält, kann ich sie wie folgt ohne irgendwelche Verweise oder Modulnamen starten:
    Code:
    Private Sub CommandButton1_Click()
    Dim meinMakro As String
    meinMakro = ComboBox1.Value
    Application.Run meinMakro
    End Sub
    Wenn du das anders gemacht hast, braucht es detailiiertere Auskünfte zu den obigen Fragen.
     
    Gerhard H, 18. August 2024
    #4
  5. G.O.Tuhls
    G.O.Tuhls Erfahrener User
    Warum tust Du denn sowas?
    Das Userform gehört nicht in das AddIn in STARTUP, sondern in die Vorlage für das Dokument, das Du erstellen willst. Darin packst Du das Userform und in "ThisDocument" eine Startsub mit dem Namen Document_new() das den Show-Befehl enthält. Dann startest Du die Vorlage ganz normal per Doppelklick.
    Gruß
    Burkhard
     
    G.O.Tuhls, 18. August 2024
    #5
  6. Al3x05 User
    Da hast du mich falsch verstanden.

    Vielen Dank für den Input. Das habe ich so angepasst, leider ändert das an der Fehlermeldung nichts.

    Damit das leichter nachvollziehbar ist, habe ich die Dokumente stark reduziert angehängt.
    AddinMK ist die globale Vorlage, die den auszuführenden Code enthält, der von vielen Dokumenten aus aufgerufen werden soll.
    Start Dokument ist die Vorlage auf basis derer eine Dokument erstellt werden soll.

    In der Userform des Start Dokument sind drei Buttons:

    Anzeigen: Der Button funktioniert sehr gut, die MsgBox wird angezeigt

    Start: Hier bekomme ich den Fehler:
    Kompilierungsfehler in ausgeblendetem Modul: Subs Dieser Fehler tritt häufig auf, wenn Code nicht mit der Version, Plattform oder Architektur dieser Anwendung kompatibel ist. Klicken Sie auf 'Hilfe", um Informationen dazu zu erhalten, wie Sie diesen Fehler beheben können.

    Abbrechen: Hier bekomme ich den Fehler:
    Laufzeitfehler '-2147352573 (80020003):
    Das angegebene Makro kann nicht ausgeführt werden.
     
  7. G.O.Tuhls
    G.O.Tuhls Erfahrener User
    Das schrieb ich eingangs bereits. Dein Vorgehen liegt - so wie Du es beschreibst jedenfalls - irgendwie fernab vom Standardbetrieb.
    Werd ich mir heute Abend mal ansehen.
     
    G.O.Tuhls, 18. August 2024
    #7
  8. Al3x05 User

    Prozeduren über eine globale Vorlage ausführen

    Danke für deine Unterstützung.

    LG Alex
     
  9. G.O.Tuhls
    G.O.Tuhls Erfahrener User
    Es funktioniert bei mir, wenn
    • das AddIn in STARTUP und
    • die Startdatei in einem vertrauenswürdigen Ordner
    gespeichert sind und ich in üblicher Weise die Startvorlage doppelklicke, um das neue Dok zu erzeugen.
    Was Du beim Neuanlegen im VBA-Editor machst, erschließt sich mir immer noch nicht.
    Gruß
    Burkhard
     
    G.O.Tuhls, 18. August 2024
    #9
  10. G.O.Tuhls
    G.O.Tuhls Erfahrener User
    Zu den Problemen beim Abbruch bin ich noch am Pfriemeln.
     
    G.O.Tuhls, 18. August 2024
    #10
  11. G.O.Tuhls
    G.O.Tuhls Erfahrener User
    Die Abbruch-Routine läuft bei mir, nachdem ich das Userform vor dem Ausstieg mit Unload me geschlossen habe.
     
    G.O.Tuhls, 19. August 2024
    #11
  12. Gerhard H Erfahrener User
    Hallo auch von mir nochmal,

    bei mir funktionieren die beiden hier:
    Application.Run "AddinMK.Subs.Abschnitt1"
    Application.Run "AddinMK.Subs.Abschnitt2"


    Nicht funktionieren tun:

    1. Application.Run "AddinMK.Subs.Abbrechen"
    Wie in #11 bereits geschrieben, gehört. der Befehl Unload Userform1 in den Code desjenigen Dokuments, das auch eine Userform hat. Also:
    Private Sub CommandButton2_Click()
    Unload UserForm1
    Application.Run "AddinMK.Subs.Abbrechen"
    End Sub

    Und aus der Subs.Abbrechen gehört er raus.

    2. Application.Run "AddinMK.Subs.Start". Warum da der erwähnte Fehler kommt, hab ich noch nicht rausgefunden. Prinzipiell funktioniert der Aufruf, denn wenn ich den Bedingungsteil (If left(bm.name...end if) auskommentiere und mir statt dessen nur die Namen ausgeben lasse:
    For Each bm In ActiveDocument.Bookmarks
    msgbox bm.name
    next bm

    Dann klappt das. Ich grübele noch ein wenig weiter.
     
    Gerhard H, 19. August 2024
    #12
  13. Gerhard H Erfahrener User

    Prozeduren über eine globale Vorlage ausführen

    guten Morgen,

    o Wunder, jetzt läuft die subs.start bei mir auch. Und ich kann nicht mal sagen, warum. Was ich zuletzt gemacht habe:
    • die subs.Start in subs.Starte geändert (den Aufruf natürlich auch), um einen potentiellen Konflikt mit dem VBA-Schlüsselwort "Start" zu vermeiden
    • die Verweise durchforstet, eine aktivierte Microsoft HTML Library gefunden und deaktiviert.
    Aber wenn ich die beiden Änderungen wieder zurücknehme, gehts trotzdem noch. D.h. ich hab keine Ahnung, was die Ursache für den Fehler und sein Verschwinden sein könnte.
     
    Gerhard H, 19. August 2024
    #13
Thema:

Prozeduren über eine globale Vorlage ausführen

Die Seite wird geladen...
  1. Prozeduren über eine globale Vorlage ausführen - Similar Threads - Prozeduren globale Vorlage

  2. Sub-Prozedur in der Schleife

    in Microsoft Access Hilfe
    Sub-Prozedur in der Schleife: Liebe Access-Profis, wieder mal weiß ich nicht weiter: Ich habe ein Formular, indem ich 41 Bezeichnungsfelder ('Bez0 – Bez40') und ebenso viele Textfelder ('txtRedSch0 – txtRedSch40')...
  3. Let-Prozedur der Eigenschaft ist nicht definiert...

    in Microsoft Access Hilfe
    Let-Prozedur der Eigenschaft ist nicht definiert...: Hallo zusammen, über ein Kombinationsfeld wird eine Veranstaltung ausgewählt. Anschließend soll an alle Teilnehmer dieser Veranstaltung ein Mail versendet werden. Das sieht so aus: Code:...
  4. Gespeicherte Prozedur Eigenschaftenseite (ADP)

    in Microsoft Access Tutorials
    Gespeicherte Prozedur Eigenschaftenseite (ADP): Gespeicherte Prozedur Eigenschaftenseite (ADP) Access 2010 Access 2007 Mehr... Weniger...
  5. Gespeicherte Prozedur Parameter Eigenschaftenseite (ADP)

    in Microsoft Access Tutorials
    Gespeicherte Prozedur Parameter Eigenschaftenseite (ADP): Gespeicherte Prozedur Parameter Eigenschaftenseite (ADP) Access 2010 Access 2007 Mehr... Weniger...
  6. VBA - Prozedur zu groß

    in Microsoft Excel Hilfe
    VBA - Prozedur zu groß: Hallo, ich erzeuge mit Hilfe von Excel via VBA eine XML-Datei. Diese ist leider sehr groß (über 330.000 Zeichen auf mehreren tausend Zeilen), weshalb ich die Prozedur auf 2 Prozeduren aufgeteilt...
  7. Probleme mit Prozeduren

    in Microsoft Excel Hilfe
    Probleme mit Prozeduren: Hallo, ich hab ein kleines Problem mit Prozeduren. Der Code führt die eingeschobene Prozedur nicht in der neu erstellten Mappe aus, sondern in der alten Ursprünglichen Mappe. Ich hoffe ihr...
  8. Prozedur aufteilen

    in Microsoft Excel Hilfe
    Prozedur aufteilen: Hallo, in der angehängten Tabelle habe ich in Tabelle 1 einen VBA Code hinterlegt, bei dem leider die Prozedur zu groß ist. Ich habe im Internet gelesen, dass ich das ganze in Teilprozeduren...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden