Word Makro Vertragsvorlage

Moosi

Ensign
Registriert
Juli 2010
Beiträge
248
Hallo,

ich habe ein Problem mit VBA bzw. meinem makro. Folgende Aufgabenstellung:

Ich habe eine Vertragsvorlage mit mehreren Auswahlmöglichkeiten.

z.B. so

A) Der Nutzer stimmt zu

B) Der Nutzer lehnt ab

Jetzt möchte ich eine Checkbox für jede Option anbieten, die den Text "Der Nutzer stimmt zu" bzw. bei Auswahl von B " Der Nutzer lehnt ab" in ein neues Worddokument kopiert.

Meine bisheriges VBA:

Private Sub CheckBox1_Click()

With ActiveDocument
If Not .Bookmarks.Exists("ausgabe1") Then
MsgBox "Die Textmarke 'ausgabe1' existiert nicht"
Exit Sub
End If

On Error GoTo fehler
Set auttxt = AttachedTemplate.AutoTextEntries("textblock1")

If .CheckBox1.Value = True Then
.Bookmarks("ausgabe1").Select
Selection = auttxt
.Bookmarks.Add Name:="ausgabe1", Range:=Selection.Range

Else
.Bookmarks("ausgabe1").Select
Selection = " "
.Bookmarks.Add Name:="ausgabe1", Range:=Selection.Range
End If

End With

Exit Sub
fehler:
MsgBox Err.Number & " - " & Err.Description

End Sub



Darüber wird der Text nur auf einer weiteren Seite über Textmarken ausgegeben. Dies ist natürlich nur eine übergangslösung, da ich ja den ganzen Text dennoch kopieren muss. Hab Tante google schon intensiv durchforstet, bin aber zu keener zufriedenstellenden LSG gekommen. DANKE EUCH!
 
Als Text in einer Tabelle. Davor kommt die Checkbox, damit ich dann auswählen kann , ob der Text in das neue Dokument gehört oder nicht. Danke dir für etwaige Vorschläge.
 
Ich halte den Plan, ganz vorsichtig, für unmöglich.

Ein neues Dokument ist ein neues Dokument ist ein neues Dokument. Nur von einer (richtigen) Vorlage aus die in dem Zustand der eingestellt (Chckebox) wurde als Dokument gespeichert wird ist das geplante sinnvoll zu verwirklichen.
Es müsste wiederum eine Art Vorlage existieren die von einem weiteren Masterdokument, in dem Einstellungen stattfinden, per Makros darin als Zieldokument kopiert wird und in dem dann die Einstellungen nachgeahmt werden. Das wäre massiv umständlicher [Voralgendokument ohne Makros, Masterdokument mit; ansonsten könnt sich auch der Master selbst per Speichern-Unter kopieren, aber das ist nicht gut und stilecht].

CN8
 
Ich verstehe nicht, wieso ein Text mit diesem Wortlaut in ein neues Dokument kommen soll.
Also im Grunde ist mir die gesamte Vorlage und das Ziel nicht klar.

Kannst du das irgendwie als Dummy hochladen, damit man mal einen Eindruck hat wie das fertig aussehen soll und was dabei die variablen Einträge sind?
 
Sorry, dass ich mich erst jetzt melde. War im Urlaub.
Im Anhang habe ich ein BSP eingefügt. Leider kann ich aufgrund von datenschutzrechtlichen Gründen das Original nicht hochladen ;) Aber anhand des BSP ist das eh nachvollziehbar.
Ich habe in dem Kontext 3 Checkboxen. Wenn ich jetzt Checkbox 1 auswähle, soll der ausgewählte Text in ein neues Dokument. (!Wenn dies überhaupt möglich ist!) Das BSP würde wie das Orginal als .dotm abspeichern.

Ich habe leider noch nicht groß mit vba hantiert und google hat leider nach langer Suche nichts vernünftiges ausgespuckt. Wenn jemand nen anderen Vorschlag hat, bin ich ganz Ohr! DANKE :)

BSP Checkbox.JPG
 
Aha. Aber so rein aus Benutzersicht, ist das eine sinnvolle Arbeitsweise die du da anbietest? Ich vermute mal nicht.
Ich täte dir empfehlen das etwas größer zu denken.

Du solltest 3 Templates bauen die zentral im Firmennetzwerk liegen und als dotx gespeichert sind.
Als nächstes baust du eine zentrale dotm mit der gesamten Programmierung. Diese Vorlage bekommt auch die zentrale Ribbon-Integration.
>> Hierbei geht es ein stückweit um die Sicherheit. Ein zentraler Ort lässt sich per Gruppenrichtlinie als sicherer Speicherort definieren und alle anderen Makros werden deaktiviert. Verteile dotm sind da ziemlich hinderlich!

Was du dem Benutzer anbietest ist ein Firmenbereich in der Backstage-Ansicht. Das ist das hinter "Datei".
Und genau da baust du eine Auswahl auf. Entweder gleich die 3 Varianten deines Templates (einfach), oder mit ToggleButtons und einem Button für das Dokument (viel aufwendiger).
Und dann ruft der Benutzer auch direkt das fertige Template auf ohne da was rumzukopieren. Dort drin können dann weitere VBA-Routinen aufgerufen werden die kA ContentControls ausfüllen. Von Bookmarks halte ich nicht mehr viel.

Das ist für den Anfang ziemlich großer Aufwand, aber langfristig entsteht ein gut administrierbares zentrales Konstrukt für größere Aufgaben.
Einen relativ robusten RibbonHandler findest du bei mir auf der Webseite (Signatur) in der VBA-Erweiterung für Excel und Word. Wobei ich den grad auf modularisierbar umgestellt habe.

Musst du dich entscheiden ob du Lust dazu hast, ist ja ein (hoffentlich) helfendes Forum hier und ich weiß, dass das Thema so umgesetzt schwierig ist.
 

Anhänge

  • Firma_Backstage.png
    Firma_Backstage.png
    26,6 KB · Aufrufe: 454
Hey danke dir für deine ausführliche Antwort. Sowas macht Computerbase immerwieder total interessant, da ich an sowas nicht gedacht habe. Merci dir!

Da ich nur als Werkstudent in dem Kontext für eine größere Firma arbeite, habe ich da eigentlich nix zu melden :D
Mein Chef hat mich gefragt, ob ich das von mir beschriebene machen könnte und ich habe dem einen Versuch gewidmet.
Das "Problem" ist einfach, dass Sie den Aufwand des Rauskopierens der jeweiligen Vertragsabschnitte mit str+c verneiden wollen bzw. eine schönere Lösung haben wollen.
 
Eine größere Firma hat doch sicherlich auch irgendeinen leidensfähigen Mitarbeiter der sich IT-Admin schimpft.
Dem grätscht ihr eventuell in seine Verwaltung, da sollte sich dein Chef mal kümmern wie das mit eigener Programmierung gehandhabt wird.

Als Werksstudent haste jetz quasi zwei Möglichkeiten.
- Du willst glänzen, dann schlägst du so ein "integriertes" System vor und betonst die Vorteile wie "die Nutzer finden die Vorlagen da wo sie auch alle anderen neuen Dokumente in Word anlegen". Danach wirst du ausgebeutet weil du das jetzt kannst und ... Scherz, kA wie die Firma drauf reagiert. :D
- Du lässt das, aber VBA und proggen interessiert dich soweit, dass du das selber vertiefen willst. Dann machste das auch ohne Firma. Für die Firma würde ich einen einfachen Dialog vorschlagen der beim öffnen aufpoppt und wo die drei Auswahlmöglichkeiten drin sind. Beim OK klicken passiert dann was, neue Vorlage öffnen oder was auch immer.

Für den Wissensdurst täte ich vorschlagen:
- du lädst dir mal den Custom Ui Editor von Microsoft runter. Achtung, der braucht .net 3.5 auf der Maschine!
- du legst dir ein leeres Template *.dotm an und öffnest das mit dem UI Editor und schaust dir mal die Beispiele drin an. Da gibt es Code Samples die man angucken kann. Der ist sehr übersichtlich.
- du lädst dir bei mir den iox Kram runter und nimmst dir das RibbonHandler Modul raus. Damit kannst du anfangen den Buttons Leben einzuhauchen und hast nahezu keinen Aufwand.
- im XML Teil des Editors ist das RibbonLoad für das initialisieren des Ribbons zuständig, onAction das klicken und Get... holt sich einen Status vom RibbonHandler.

Vom Prinzip brauchst du nur im Sub RibbonAction() einen Case "MeineVorlageX": Word.Documents.Add("Pfad zur Vorlage") einfügen und dann müsste es gehen.

PS: Für den Backstage Bereich muss ich das kurz hier klauen. Das hab ich nicht im iox. :D

Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" xmlns:shared="Firma" onLoad="RibbonLoad">

  <backstage>
    <tab id="FirmaBackstage"
			label="Firma Vorlagen"
			insertAfterMso="TabNew"
			firstColumnMinWidth="500"
			firstColumnMaxWidth="600"
			secondColumnMaxWidth="600">

      <firstColumn>
        <taskFormGroup id="tfg" allowedTaskSizes="medium">

          <category id="Templates" label="Bereich">

            <task id="MiscTask" label="Allgemein">

              <group id="BackstageMiscStorageGroup" label="Ablage" helperText="Ablagesystem">

                <primaryItem>
                  <button id="NewVertrag1" label="Vertrag 1" onAction="RibbonAction" />
                </primaryItem>
                <topItems>
                  <button id="NewVertrag2" label="Vertrag 2" style="borderless" onAction="RibbonAction" />
                </topItems>
              </group>
            </task>
          </category>
        </taskFormGroup>
      </firstColumn>
    </tab>
  </backstage>
</customUI>
 
Zuletzt bearbeitet:
Ich mach jetzt einfach mal den Vorschlag und schaue dann wie der Chef bzw. Chefin reagiert. Ich selbst werde mich definitive damit weiter beschäftigen, da es einfach sehr interessant und täglich anwendbar ist.
Für mich war/ist das Programmieren in der Uni immer nervig gewesen, da ich keinen Anwendungsbezug hatte.

In der Konstellation mit VBA und grundlegende Batch Programmierung (wenn man das so überhaupt sagt) finde ich wiederrum sehr wissenswert.

Danke an dich! Werde auch auf deiner HP stöbern!
 
Ich bin gespannt. :D

Statt Batch solltest du lieber PowerShell nehmen, das hilft dir an vielen Stellen eher weiter und ist in Serverumgebungen de facto Pflicht.
Dann eigentlich auch C# VSTO statt VBA, aber an dem Punkt bin ich auch erst sehr vorsichtig unterwegs.
 
:D Ok dann les ich mich mal bei Powershell ein bzw. spiel mal einwenig herum. Hab mich auch entschieden nächstes Semester für sonen Makro progammierkurs anzumelden. Kann ja nur helfen!
 
Zurück
Oben