Makro für Word - Modul

  • #1
A

Alex 1

Guest
Grüßt euch,

ich möchte fragen wie kann man ein Makro in Word ausführen das aber in einem Modul geschrieben ist.

Das Makro soll nach dem Öffnen des Dokument ausgeführt werden.

Danke
 
  • #2
ich nehme an, dass das Makro schon als Modul eingefügt ist und einen Namen hat - ändere diesen Namen in AutoOpen bzw, AutoNew

Gruß Lisa
 
  • #3
Hallo Danke dass du geantwortet hast

Das Problem konnte ich aber nicht löesen

Code:
Sub AutoNew()

'Datum 1 Tag vordatieren
'ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.InsertBefore Format((Date + 1), dddd, dd. MMMM yyyy)
ActiveDocument.Bookmarks(Datum).Range.InsertBefore Format((Date), dddd  dd. MM. yyyy)

End Sub
 
  • #4
Hallo Alex 1,

ist das Modul in der Normal.dot oder in einem extra Document untergebracht ?

Gruß Matjes :)
 
  • #5
hast Du auch die Textmarke Datum in Deine Kopfzeile eingefügt?
 
  • #6
Hallo zusammen,

AutoNew - wird beim Erstellen eines neuen Dokuments ausgeführt
AutoOpen - wird beim Öffnen eines bestehenden Dokumentes ausgeführt.

Makro also ggf. in beide Versionen ausführen.

Gruß Matjes  :)
 
  • #8
Hallo Alex 1,

ein Makro in einem Dokument kann nur ausgeführt werden, wenn dieses geöffnet ist.
Deshalb die Frage:
ist das Modul in der Normal.dot oder in einem extra Document untergebracht ?

Bei deinem Makro muß mann, wie Lisa4 richtig bemerkt hat, darauf achten,
daß die Textmarke Datum vorhanden ist.

Nennen wir deinen Makro mal so, wie die Funktion ist.

Code:
Sub DatumVordatierenImKopfUndTextmarkDatum()
 ->Datum 1 Tag vordatieren
  ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.InsertBefore _
                                        Format((Date + 1), dddd, dd. MMMM yyyy)
  On Error Resume Next
  ActiveDocument.Bookmarks(Datum).Range.InsertBefore _
                                        Format((Date + 1), dddd  dd. MM. yyyy)
  On Error GoTo 0
End Sub
Die Zeile mit->On Error Resume next' ist für den Fall, daß das aktive Dokument keine Textmarke->Datum' enthält. Fehlt die Textmarke, erzeugt der Makro eine Fehlermeldung. Mit->On Error Resume next' wird diese Fehlermeldung unterdrückt und der Makro fährt mit der nächsten Zeile fort.

Damit der Makro in allen Dokumenten verfügbar ist, schreiben wir ihn in die Normal.dot.
Das geht folgendermassen:
1) neu Word-Datei öffnen
2) VB-Editor öffnen Alt+F11
Links siehst Du ein Fenster mit der Überschrift Projekt-Project.
In diesem Fenster ist die Normal.dot unter dem Namen Normal zu finden.
3)  Modul anlegen mit
3a) Normal mit der Maus selektieren
3b) rechte Maustaste -> Einfügen -> Modul
in der Mitte geht das Code-Fenster Normal-Modul1(Code) auf
3c) den gesamten Code per copy und Paste in dieses Fenster hineinkopieren
Mit Testen->komilieren kannst du noch testen, ob der Makro syntaktisch fehlerfrei ist
3d) Normal.dot speichern mit Alt+S
4)  VB-Editor schliessen mit Alt+Q

So jetzt stellt sich die Frage:
bei welchem Ereignis soll der Makro aufgerufen werden?
  - I)   beim Öffnen eines bestimmten  Dokuments
  - II)  beim Öffnen jedes bestehenden Dokuments
  - III) beim Öffnen eines neuen Dokuments

zu I) beim Öffnen eines bestimmten  Dokuments
angenommen das Dokument heißt Dok1.doc
Im Open-Ereignis des dieses Dokuments soll DatumVordatierenImKopfUndTextmarkDatum aufgerufen werden.
Vorgehen:
1) VB-Editor öffnen Alt+F11
Im Projekt-Fenster siehst Du Project(Dok1)
Die Pluszeichen anklicken, so daß die Ordner und Code-Seiten sichtbar werden.
2) Ein Doppelklick auf ThisDocument unterhalb von Project(Dok1)
in der Mitte geht das Code-Fenster Dok1-ThisDocument(Code) auf
3) folgenden Code in dieses Fenster kopieren:
Code:
Private Sub Document_Open()
  On Error Resume Next
  Call DatumVordatierenImKopfUndTextmarkDatum
End Sub
4) speichern mit Alt+S
5)  VB-Editor schliessen mit Alt+Q

zu II) beim Öffnen jedes bestehenden Dokuments
Im Open-Ereignis eines jeden bestehenden Dokumentes soll DatumVordatierenImKopfUndTextmarkDatum aufgerufen werden.
Vorgehen:
1) VB-Editor öffnen Alt+F11
Im Projekt-Fenster siehst Du Normal.
Die Pluszeichen anklicken, so daß die Ordner und Code-Seiten sichtbar werden.
2) Ein Doppelklick auf Modul1 unterhalb von Normal
in der Mitte geht das Code-Fenster Normal-Modul1(Code) auf
3) folgenden Code in dieses Fenster kopieren:
Code:
Sub AutoOpen()
  Call DatumVordatierenImKopfUndTextmarkDatum
End Sub
4) speichern mit Alt+S
5)  VB-Editor schliessen mit Alt+Q

zu III) beim Öffnen eines neuen  Dokuments
Im Open-Ereignis eines jeden neuen Dokumentes soll DatumVordatierenImKopfUndTextmarkDatum aufgerufen werden.
Vorgehen:
1) VB-Editor öffnen Alt+F11
Im Projekt-Fenster siehst Du Normal.
Die Pluszeichen anklicken, so daß die Ordner und Code-Seiten sichtbar werden.
2) Ein Doppelklick auf Modul1 unterhalb von Normal
in der Mitte geht das Code-Fenster Normal-Modul1(Code) auf
3) folgenden Code in dieses Fenster kopieren:
Code:
Sub AutoNew()
  Call DatumVordatierenImKopfUndTextmarkDatum
End Sub
4) speichern mit Alt+S
5)  VB-Editor schliessen mit Alt+Q


So, noch ein paar Hinweise:

- Wenn Methode I und II benutzt werden, wird zunächst AutoOpen und dann Document_Open ausgeführt. Das Datum steht dann zweimal im Kopf.

- Wenn Methode I oder II benutzt werden, wird bei jedem Öffnen das Datum in den Kopf geschrieben.
  Für Methode I besteht die Möglichkeit das aktivieren der Makros abzulehnen.
  AutoOpen wird jedoch immer ausgeführt !

Gruß Matjes :)
 
  • #9
Hallo,

Ein Dankeschön an allen die mir weitergeholfen haben, hauptsächlich an Matjes für die ausführliche Beschreibung und die mühe.

Mit eurer Hilfe habe ich es endlich geschafft, mein vorhaben zu vollenden.

Danke
 
Thema:

Makro für Word - Modul

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.966
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben