# [Word 2003] Seitenränder in der Voransicht abgeschnitten



## Frezl (31. August 2010)

Salü allerseits,

ich arbeite an einem Word-Dokument, dessen Seitenränder unterhalb des druckbaren Bereichs meines Standard-Druckers liegen. Das ist bis dahin kein Problem, da ich das Dokument nur als PDF exportieren will und das funktioniert auch wie es soll. Es hat aber zur Folge, dass in der Seitenansicht die Ränder auf das Maß des Druckers abgeschnitten werden. Um die ganze Seite bis zum Rand in die Seitenansicht zu bekommen, muss ich das Dokument erst ein Mal als PDF drucken. Danach stimmt auch die Seitenansicht.
Das Problem ist aber, dass bei jedem Neustart von Word die wieder Einstellungen für den Standarddrucker geladen werden und ich keinen Bock habe, das recht umfangreiche Dokument immer erst einmal als PDF zu exportieren, bevor ich richtig in Word arbeiten kann.

Wie kann ich dieses Problem beheben, ohne dass ich den PDF-Drucker als Standarddrucker fürs ganze System einstellen muss? Kann ich ihn vielleicht irgendwie nur diesem einen Dokument als Standard zuweißen?

Ich bitte um Rat.

Viele Grüße,
Frezl


----------



## Drogist (31. August 2010)

Moin,

ich würde das per Makro erledigen. Prinzipiell würde das so aussehen:
Standarddrucker auslesen und merken
Automatisch beim Öffnen des Dokuments (Sub AutoOpen)
Standarddrucker auf PDF setzen
..
Automatisch beim Schließen des Dokuments  (Sub AutoClose)
Original-Standarddrucker wieder setzen


----------



## Frezl (31. August 2010)

Hey Drogist,

Danke für deine Antwort. Damit ist aber nicht der Kern des Problems beseitigt. Ich gehöre zu den Menschen, die exzessiven Gebrauch des Multi-Taskings machen. Es könnte also sein, dass ich - während das Word-Dokument geöffnet ist - etwas im Browser ausdrucken will. Und zwar auf dem physikalischen Drucker. Und wenn ich mich da drauf verlass, dass der wie gewohnt als Standard-Drucker eingestellt ist, hab ichs verkackt 

Und mit Makros kenn ich mich leider überhaupt nicht aus :-(

Viele Grüße,
Frezl


----------



## Drogist (31. August 2010)

Moin,

wen es denn so wichtig ist, dann arbeite mit diesem Programm in einer VM (virtual machine). Das sollte dann so gehen, da die VM ja ein virtueller eigener Rechner mit separaten Einstellungen ist.


----------



## tombe (1. September 2010)

Hallo Frezl,
also ich habe es bei mir eben so getestet und es hat geklappt:


```
Public WithEvents wd As Word.Application
Public drucker As String
Public datei As String

Private Sub Document_Open()
Set wd = Word.Application

drucker = ActivePrinter
datei = ThisDocument.Name

wd.ActivePrinter = "FreePDF" 'Name des Druckers ändern!

End Sub


Private Sub wd_WindowActivate(ByVal Doc As Document, ByVal Wn As Window)

If Wn = datei Then
    wd.ActivePrinter = "FreePDF" 'Name des Druckers ändern!
Else
    wd.ActivePrinter = drucker
End If

End Sub

Private Sub wd_WindowDeactivate(ByVal Doc As Document, ByVal Wn As Window)

If Wn = datei Then
    wd.ActivePrinter = drucker
End If

End Sub
```

Du kannst diesen Code so wie er ist einfach kopieren und dann im VB-Editor (Alt+F11) beim Dokument einfügen. Was du dann halt noch ändern musst, ist der Name des Druckers der verwendet werden soll.

Getestet habe ich das zwar mit Word 2000 aber das sollte keine Rolle spielen.

Hoffe es hilft dir.

Gruß Thomas


----------



## Frezl (1. September 2010)

Hey tombe,

genau sowas hab ich gesucht!  Nur leider funktionierts bei mir nicht :-( Habs eingefügt in "ThisDocument" in meinem Project. Den Druckernamen hab ich zu "FreePDF XP" geändert, so heißt mein PDF-Drucker, mit dem die Seitenansicht stimmt. Dann gespeichert. Wenn ich jetzt in die Seitenansicht gehe, seh ich keinen Unterschied. Die Ränder sind immer noch beschnitten. Auch im Druckdialog ist weiterhin der Standarddrucker ausgewählt.

Wenn ichs richtig verstanden hab, macht dein Skript folgendes:
Es speichert beim Öffnen des Dokuments die Namen des aktiven Druckers (also des Standarddruckers) und des aktuellen Dokuments. Danach setzts den aktiven Drucker auf "FreePDF XP".

In den anderen beiden Subs wird jeweils der aktive Drucker getauscht. Aber was sind WindowActivate bzw Deactivate für Events? Wann werden die getriggert? Wenn ich in die Seitenansicht gehe, oder wenn ich zu diesem Worddokument wechsle?

Grüße,
Frezl


//  EDIT: Hab nach etwas Recherche zum Thema VBA versucht, der Sache mit einem Makro beizukommen. Aber ich kann Makros nicht abspielen  Selbst wenn ich die Sicherheitseinstellungen auf niedrig hab, kommt die Meldung, dass Makros deaktiviert seien


----------



## tombe (2. September 2010)

Hi Frezl,

beim Öffnen des Dokuments wird wie du oben geschrieben hast der Drucker "getauscht". So bald ein anderes Fenster (Word oder was auch immer) aktiviert bzw. das Fenster dieses Dokumentes deaktiviert wird, wird geprüft ob der Drucker wieder auf den Standard Drucker gewechselt werden muss oder nicht (deshalb wird der Name des Dokuments auch gespeichert).

Das es bei dir nicht geht liegt meiner Meinung nach zu 100% daran das keine Makros ausgeführt werden. Es ist ja schließlich eines.

Ich habe 2003 nur mal kurz gesehen und es gibt da wohl verschiedene Einstellungen die gemacht werden müssen damit Makros ausgeführt werden.


----------



## Frezl (2. September 2010)

Yeah, geilo! Makros laufen jetzt. Hatte nicht beachtet, dass man nach dem Ändern der Sicherheitseinstellungen Word neu starten muss. Manchmal sinds die Kleinigkeiten, die einem das Leben schwer machen 

Dein Skript läuft super. Macht genau das, was ich wollte  Hab mit auch noch nen Befehl dazu geschrieben, der die Anzeige des Markups deaktiviert. Keine Ahnung, warum Word das immer zwanghaft einblendet...

Viele Grüße und vielen Dank!
Frezl

// EDIT: Wieder mal zu früh gefreut :-( Hab nen kleinen Fehler entdeckt: Wenn ich in der Seitenansicht bin und dann die Anwendung wechsle, bleibt Free PDF XP als Standarddrucker aktiviert. Wenn ich aber zurück nach Word in die immer noch aktivierte Seitenansicht wechsle, wird der physikalische Standarddrucker eingestellt und die Ränder nachträglich beschnitten. Ich hab dann also plötzlich den Gegenteiligen Effekt. Es fehlt das Event für das Wechseln von der Seitenansicht in ein anderes Dokument. Kannst du mir zeigen, wie ich das einbauen kann?


----------



## tombe (6. September 2010)

Hi Frezl,

habe eine etwas geänderte Version zu bieten:


```
Public WithEvents wd As Word.Application
Public standard_drucker As String
Public pdf_drucker As String
Public datei As String

Private Sub Document_Open()
Set wd = Word.Application

standard_drucker = ActivePrinter
pdf_drucker = "FreePDF"

datei = ThisDocument.Name

wd.ActivePrinter = pdf_drucker

End Sub

Private Sub wd_DocumentChange()

If wd.ActiveDocument = datei Then
    wd.ActivePrinter = pdf_drucker
Else
    wd.ActivePrinter = standard_drucker
End If

End Sub
```

Damit wird immer beim Wechsel des aktiven Dokuments geprüft ob der Dateiname entsprechend gesetzt ist oder nicht und entsprechend auch der Drucker gewechselt.
Was hiermit allerdings nicht geht ist der Wechsel von Word zu eine beliebigen Anwendung (z.B. Explorer, eMail-Programm, Excel, ...).
Habe bis jetzt leider noch keine Möglichkeit gefunden wie ich zusätzlich zur obigen Überprüfung prüfen kann ob Word selber den "Fokus" verliert.

Kannst diesen Code ja trotzdem mal übernehmen. Denke das du trotz des Problems hiermit besser klar kommst.

Gruß Thomas


----------

