Konzept Dokumentvorlagen

02/12/2009 - 13:33 von Phil Belloni | Report spam
Hi

Ich habe für eine Firma die vorhandenen sechs Dokumentvorlagen abgeàndert
und verbessert, welche katastrophal erstellt bzw. programmiert wurden. So
schlechte Programmierung habe ich in meiner Laufbahn noch nie gesehen. Ach
enthalten diese Hartcodierte Formatierungen ("Überschrift 1"), welche nichts
im Code zu suchen haben.

Nun sind wir an einen Punkt gekommen, diese komplett neu zu erstellen, da
die Probleme nicht aufhören und die Anforderungen immer grösser werden. Die
Firma will kein CMS bzw. DMS.

Der Aufbau dieser Dokumentvorlagen beruhen auf einem Makro-Basismodul,
welches durch das Startup geladen wird und Makromodule, welche in jeder
Vorlage selber vorhanden sind, welche auch eine Referenz zum Basismodul
enthalten. Diese gibt aber Probleme in vielerlei Hinsicht, z.B. wenn jemand
externes das Dokument ohne Basismodul öffnet gibt es Konflikte, oder z.B.
wenn die alten Dokumente nicht auf dem neusten Stand der Makros sind (ca.
150'000 Dokumente müssen auf die neuen Vorlagen konvertiert werden). Auch
bei den verschiedenen Office- und Sprachversionen streikt es stàndig.

Ich kenne mich relativ gut aus mit der Dokumentvorlagenprogrammierung,
möchte aber euch grundlegende Fragen stellen.

1. Ich stelle mir vor, nur ein Basismodul (Startup) mit allen Funktionen,
Formulare usw. zu erstellen. Dieses Modul nimmt einfach immer Bezug auf das
aktuelle Dokument (ActiveDocument), welches geöffnet ist. Ist das
realistisch?

2. Können Tastenkürzel, welche ich im Dokument ausführe, an das Basismodul
ohne Makro im Dokument weitergeleitet werden?

Könnt ihr mich beraten?

Gruss und Dank

Phil
 

Lesen sie die antworten

#1 Thomas Gahler
03/12/2009 - 09:52 | Warnen spam
Hallo Phil



1. Ich stelle mir vor, nur ein Basismodul (Startup) mit allen Funktionen,
Formulare usw. zu erstellen. Dieses Modul nimmt einfach immer Bezug auf
das
aktuelle Dokument (ActiveDocument), welches geöffnet ist. Ist das
realistisch?


Ja das ist genau der Ansatz den du nehmen muss. Ich würde jedoch einen
Schritt weiter gehen und nicht auf das 'ActiveDocument' zugreifen, sondern
für dieses Dokument ein sauberes Objekt erzeugen, das ich dann jeder
Prozedur als Argument übergeben würde.
dim doc as word.document
set doc = ActiveDocument
doc.


Dein Konzept gefàllt mir (weil ich es selber so mache ;-)) deshalb ein paar
zusàtzliche Gedanken
- In den Dokumentvorlagen habe ich nur noch eine Zeile Code drin, welche den
Aufruf im Basismodul macht. Dort werden auch die Abfolge der UserForm und
alles andere gesteuert.
- Für Symbolleisten und andere spezielle Funktionen habe ich eigene Add-Ins
erstellt. Diese Add-Ins werden bei Bedarf dynamisch nachgeladen. Diese
Funktionalitàt könnte ebenfalls im Basismodul oder, wie ich es mache, in
einem AddInManager.dot stehen, welche ebenfalls im Startup liegt.
- Das aktualisieren der Add-Ins und Konfigurationsdateien auf der lokalen
Festplatte kann durch ein Software-Verteilung erfolgen oder durch das
AddInManager selber.
- In einer .ini-Datei die ebenfalls im Startup leigt sind alle nàtigen
Konfigurationsparameter hinterlegt.
- Ich hànge nach dem erstellen die Dokumente jeweils an die Normal.dot an




2. Können Tastenkürzel, welche ich im Dokument ausführe, an das Basismodul
ohne Makro im Dokument weitergeleitet werden?


Die Tastaturkürzel haben meines wissens die gleiche Sichtbarkeit wie ein
Makro. Bei Namensgleichheit werden diese wie folgt übersteuert.
- Normal.dot
- Add-In
- Dokumentvorlage
- Dokument
(bei Add-In Normal.dot bin ich nicht mehr ganz sicher wer zuerst kommt).
Somit müsstest du die Tastenkürzel gar nicht unbedingt in der
Dokumentvorlage hinterlegen.
Falls du die Dinger mittels VBA anlegst, dann beachte dabei den
.CustomizingContext und nach dem setzen auch wieder zurücksetzen.




Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows XP (SP3), Office XP (SP3)

Ähnliche fragen