Kürzlich kam die Anforderung auf, das jedes Dokument was geöffnet wird,
standardmäßig immer auf 160% automatisch gezoomt werden soll.
Nun ich habe leider keine Einstelloption in Word gefunden, daher habe
ich mir kurzerhand ein Add-in geschrieben, welches genau diese (oder auch
andere) Aufgabe übernimmt.
Mein erstelltes Add-in kann hier heruntergeladen werden.
Die Datei DefaultFunctions.dotm
muss nun einfach in den AutoStart-Ordner
von Word gespeichert werden. Dieser müsste standardmäßig der folgende sein:
C:\Users\username\AppData\Roaming\Microsoft\Word\STARTUP
C:\Users\username\AppData\Roaming\Microsoft\Word\STARTUP
Alternativ kann dieser in Word in den Optionen nachgeschaut werden:
Datei/Optionen/Erweitert/Dateispeicherorte…/AutoStart/Ändern
Datei/Optionen/Erweitert/Dateispeicherorte…/AutoStart/Ändern
Jetzt noch Word einmal schließen und neu Starten und schon sollte die
Funktionalität aktiv sein.
Die Technik dahinter:
Die Datei DefaultFunctions.dotm
wird automatisch geöffnet, sobald Word gestartet wurde, da sie sich ja im AutoStart-Ordner befindet.
In dieser Datei befindet sich eine AutoExec-Prozedur, die (wie der
Name es schon ausdrückt) automatisch ausgeführt wird, sobald die Datei geöffnet
wurde.
In dieser Prozedur wird eine Klasse instanziiert, welche die Aufgabe
hat, die Ereignisse von Word abzufangen und dann dort was zu machen. Uns
interessiert hier das Ereignis DocumentOpen,
welches ausgelöst wird, sobald eine Datei in Word geöffnet wurde.
Hier der Code dazu:
Option ExplicitConst ZoomPercentage As Long = 160
Private cWatcher As clsWatchWD 'Hier wird die Klasse im Speicher gehalten
Public Sub AutoExec()
'Diese Prozedur wird automatisch nach dem Öffnen ausgeführt
Set cWatcher = New clsWatchWD 'Die Klasse wird instanziiert, somit werden die Ereignisse der aktuellen Word-Instanz in dieser abgefangen (siehe Klasse)
cWatcher.SetZoomPercentage = ZoomPercentage 'des Wertes für den Zoomfaktor
End Sub
Hier der Code von unserer Klasse clsWatchWD, die den
eigentlich Job macht:
Option ExplicitPrivate WithEvents cWD As Word.Application 'Durch WithEvents erhalten wir eine ereignisfähige Objektvariable
Dim cZoomPercentage As
Long
Public Property Let SetZoomPercentage(T As Long)
cZoomPercentage = T
'Übergabe des Wertes für den ZoomfaktorEnd Property
Private Sub Class_Initialize()
'Beim instanziieren der Klasse, wird diese Prozedur automatisch
ausgeführtSet cWD = Application 'Die aktuelle Word-instanz wird in der Ereignisfähigen Objektvariable cWD gespeichert
End Sub
Private Sub cWD_DocumentOpen(ByVal Doc As Document)
'Diese Ereignis-Prozedur wird automatisch ausgeführt, nach dem
ein Dokument geöffnet wurde'Die Variable Doc verweis auf das gerade geöffnete Dokument
'Diese Prozedur kann mit weiteren gewünschten Befehlen erweitert werden...
With Doc
'Dieser Abschnitt stellt die Ansicht auf Seitenlayout um, falls dies nicht der Fall sein sollte
If .ActiveWindow.View.SplitSpecial = wdPaneNone Then
.ActiveWindow.ActivePane.View.Type = wdPrintView
Else
.ActiveWindow.View.Type = wdPrintView
End If
'Hier wird das aktuelle Fenster auf den gewünschten Wert gezoomt
.ActiveWindow.ActivePane.View.Zoom.Percentage = cZoomPercentage
End With
End Sub
Der Code kann in der Datei eingesehen und angepasst werden, dazu die Datei nicht
direkt öffnen, sondern aus dem Windows Explorer mit rechter maustaste und
Befehle Öffnen laden.
Mit der bekannten Tastenkombi ALT+F11 wird in den VBA-Editor gewechselt und der Code kann eingesehen und geändert werden.
In der Klasse können noch weitere Ereignis-Prozeduren angelegt werden,
je nach Wunsch. z.B. Newdocument,
wenn nach dem Erstellen eines neuen Dokumentes was passieren soll.
Oder DocumentBeforeClose,
wenn beim Schließen eines Dokumentes was passieren soll, usw...