Per Makro erstelltes Dokument soll Makro enthalten

  • Word

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Per Makro erstelltes Dokument soll Makro enthalten

    Hallo,
    ich erstelle mit einer UserForm eine personalisierte Briefvorlage. Somit wird der Name usw an die richtige Stelle geschrieben.
    Nun vollzieht das VBA (mit UserForm) alle notwendigen Schritte, am Ende speichert es eine neue Vorlage. Wie ist es möglich, dieser erstellten Vorlage ein Makro mit auf den Weg zu geben, also zu übergeben? Derzeit ist die generierte Vorlage ohne ein Makro, es braucht aber eins.
    Konnte ich mein Anliegen vermitteln? Ich stehe für Nachfragen bereit.

    Grüße, cruis

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „cruis“ ()

    1) docm ist keine Vorlage, sondern ein Dokument.

    2) Wenn du so speicherst:

    Visual Basic-Quellcode

    1. ActiveDocument.SaveAs FileName:="C:\xxx.dotm", FileFormat:= wdFormatXMLTemplateMacroEnabled

    sind auch die Macros mit drin.

    Wenn du über den Dialog gehst, speicherst du als "Andere Formate" und wählst "Word Vorlage mit Makros (*.dotm)" als Dateityp.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    petaod danke für deine hilfe.
    zu 1) ich meinte dotm - sorry für den unnötigen Tippfehler

    zu 2) ich brauch aber nur einen winzigen Teil des Makros, der große Rest muss weg. Geht das? Ich muss ein "ActiveWindow.View.ShadeEditableRanges = False" übergeben können.
    Das Objekt

    ThisDocument.VBProject.VBComponents

    ist eine Collection deiner Code-Module

    Da gibt es Methoden wie Add und Remove (u.v.m.).
    Damit kannst self-modifying Code basteln.

    Das komplette Objektmodell ist hier beschrieben: msdn.microsoft.com/en-us/library/aa443983(VS.60).aspx

    Ein generelles Code-Cleanup incl. neuem Code kannst du so erreichen:

    Visual Basic-Quellcode

    1. For Each comp In ThisDocument.VBProject.VBComponents
    2. If comp.Type = 100 Then ' module ThisDocument -> delete code lines
    3. If comp.CodeModule.CountOflines > 0 Then comp.CodeModule.DeleteLines 1, comp.CodeModule.CountOflines
    4. comp.CodeModule.InsertLines 1, "Sub Test()" & vbLf & " ActiveWindow.View.ShadeEditableRanges = False" & vbLf & "End Sub"
    5. Else ' other modules -> delete whole module
    6. ThisDocument.VBProject.VBComponents.Remove comp
    7. End If
    8. Next
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „petaod“ ()

    Es klingt sehr sehr gut.
    ich hab es sofort eingebaut und war großer Spannung. Es gibt dann die Meldung "Dem programmatischen Zugriff auf das Visual Basic Projekt wird nicht vertraut." Liegts an mir?

    ich glaub, ich hab bestimmt einen Fehler bei der Postionierung deines vorgeschlagenen Quellcodes gemacht. Kannst du mir auf die Sprünge helfen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „cruis“ ()

    cruis schrieb:

    Es gibt dann die Meldung "Dem programmatischen Zugriff auf das Visual Basic Projekt wird nicht vertraut."

    Du musst in den Sicherheitseinstellungen Visual-Basic als vertrauenswürdig einstufen.

    Anleitung gibt's hier: support.microsoft.com/kb/282830/de
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich hab das Gefühl aufgeben zu müssen. Ich bekomm deinen Code nicht so eingebunden, dass es übergeben wird. Stundenlange Versuche waren glücklos, mein VBA Wissen reicht nicht aus. Ob ich noch mal auf deine Hilfe hoffen kann?

    edit: die Sicherheitseinstellungen hatte ich gefunden. danke. Aber muss das auf jedem Rechner gemacht werden, der die Vorlage nutzt?