Word XP: Makro starten, wenn Ask-Feld aktualisiert wird

31/07/2009 - 13:30 von Ingrid Kutsche | Report spam
Liebe leute,

ich knoble immer noch an dem Anliegen meiner Kollegen, in
umfangreichen Vereinbarungsdokumenten zu einem eingegebenen Datum
(Vertragsbeginn) ein anderes Datum mit einem definierten zeitlichen
Abstand (z. B. Vertragsende nach 1 Jahr) automatisch auszugeben.

Das Makro
Sub TMTageAddieren()
Dim oDoc As Document
Set oDoc = ActiveDocument
Dim Marke As Range
Ein = oDoc.Bookmarks("Beginn").Range.Text

Set Marke = oDoc.Bookmarks("Ende").Range
If IsDate(Ein) Then
Marke.Text = DateValue(Ein) + 364
Else
Marke.Text = "Fehler! Das ist kein Datum."
End If
oDoc.Bookmarks.Add Name:="Ende", Range:=Marke

End Sub

rechnet so, wie ich will, und setzt die Textmarke Ende neu.

"Beginn" als _normale_ (von Hand definierte) Textmarke allerdings wird
beschàdigt oder ganz gelöscht, wenn man das Datum àndert oder ganz
löscht. Also kam ich auf die Idee, diese Textmarke über ein Ask-Feld
zu setzen. Das klappt auch einwandfrei; allerdings muss jetzt noch das
Makro von Hand gestartet werden. In Excel hàtte ich das Makro ins
Workbook_BeforeSave oder _BeforePrint-Ereignis eingeordnet, aber die
sehe ich im Word nicht. (Oder gucke ich nur an der falschen Stelle?)

Wie kann ich das Makro so mit dem Ask-Feld verbinden, dass eine
Aktualisierung dieses Feldes das Makro anschubst?

Danke euch

Ingrid
 

Lesen sie die antworten

#1 Bernhard Sander
31/07/2009 - 14:24 | Warnen spam
Hallo Ingrid,

"Beginn" als _normale_ (von Hand definierte) Textmarke allerdings wird
beschàdigt oder ganz gelöscht, wenn man das Datum àndert oder ganz
löscht. Also kam ich auf die Idee, diese Textmarke über ein Ask-Feld
zu setzen. Das klappt auch einwandfrei; allerdings muss jetzt noch das
Makro von Hand gestartet werden. In Excel hàtte ich das Makro ins
Workbook_BeforeSave oder _BeforePrint-Ereignis eingeordnet, aber die
sehe ich im Word nicht. (Oder gucke ich nur an der falschen Stelle?)

Wie kann ich das Makro so mit dem Ask-Feld verbinden, dass eine
Aktualisierung dieses Feldes das Makro anschubst?


Ich sehe keine Möglichkeit, mit dem Ask-Feld auch einen Aufruf eines Makros zu
verbinden.

Andere Möglichkeiten:
- Ein Formularfeld für das Anfangsdatum verwenden. Die volle Funktion entfaltet
es aber nur, wenn auch ein Dokumentschutz eingerichtet wird.
Dem Formularfeld kann man mitgeben, dass beim Verlassen ein Makro ausgeführt
wird. Ich habe es aber immer wieder geschafft, dass das "Verlassen"-Makro nicht
ausgeführt wird, wenn man den Cursor per Maus aus dem Formularfeld rausnimmt.

- Ein Makro bauen, das selbst eine Userform mit einem Eingabefeld für das
Anfangsdatum und OK/Abbrechen-Knöpfen anzeigt. Das Makro kann dann beliebig viel
Code nach dem Betàtigen des OK-Knopfs ausführen. Dazu bastelst Du noch einen
Knopf in einer der Symbolleiste, mit dem dieses Makro aufgerufen wird. Die
Anwender müssen dann halt auf diesen Knopf drücken, wenn das Anfangsdatum
geàndert werden soll.

- Du arbeitest mit dem Application-Objekt und seinen Ereignissen. Da verweise
ich Dich hauptsàchlich mal auf die VBA-Hilfe. Hier sind ein zusàtzliches
Klassenmodul erforderlich, dazu der Aufruf deines Makros aus einer der
Ereignisprozeduren heraus (z.B. in DocumentBeforePrint) und ein Auto-Makro, das
das im Klassenmodul deklarierte Objekt initialisiert. Hört sich erst mal
furchtbar an, ist aber nachher nicht mehr so schlimm.

Gruß
Bernhard Sander

Ähnliche fragen